为什么用装饰器实例化一个给出“ None”作为输出的函数?

时间:2019-12-17 14:11:25

标签: python-3.6

我写了一个非常简单的装饰器,并用它来打印数字,下面是代码:

def outer(func):
    def inner(num):
        if num == 9:
            print('this is:', num)
        else:
            func(num + 2)
    return inner

@outer
def bol(num):
    num += 2
    print(num)

bol(9)
bol(10)

在执行以上代码时,我有以下发现:

我们知道我们可以实例化一个函数以正常方式查看输出。但是当我使用“ @outer”修饰符,并在“ bol”函数中返回“ num”时,当我尝试打印函数“ bol”的对象时(t = bol(10)),我得到了“无”作为输出。

在尝试进行故障排除时,我发现我必须在“ bol”函数内使用“ print(num)”,并且只需调用函数“ bol(10)”,而无需为其创建对象,程序根据需要开始工作。为什么?

有点困惑。

0 个答案:

没有答案