我写了一个非常简单的装饰器,并用它来打印数字,下面是代码:
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)”,而无需为其创建对象,程序根据需要开始工作。为什么?
有点困惑。