【发布时间】:2021-09-10 22:51:32
【问题描述】:
我知道dec1() 是一个decorator 并装饰who_is_nimo() 函数。有几件事让我感到困惑。
- 我们不能在
dec1(func1)内部不创建nowexec()函数来装饰函数吗?我试过这样做,它给出的输出与以前完全相同(与主代码不同)。
def dec1(func1):
print("Executing Now!")
func1()
print("Executed!")
@dec1
def who_is_nimo():
print("Nimo")
who_is_nimo
- 如果我们运行
who_is_nimo(不带括号)并返回nowexec()(带括号),那么输出也是一样的。这到底是怎么回事?
主代码:
def dec1(func1):
def nowexec():
print("Executing Now!")
func1()
print("Executed!")
return nowexec
@dec1
def who_is_nimo():
print("Nimo")
who_is_nimo()
【问题讨论】:
-
您尝试第一个代码了吗?因为它不起作用
-
"如果我们运行 who_is_nimo(不带括号)并返回 nowexec()(带括号),那么输出也是一样的。这里到底发生了什么?不,如果你这样做,会引发错误
-
需要一个装饰器才能返回一个函数。
-
当你最后只有
who_is_nimo时,它什么也不做。你可以删除它。 -
@VarghabShib
some_func仅引用该函数。some_func()调用函数