装饰器和Python中的临时名称绑定
“装饰函数定义不会导致临时名称绑定”是什么意思?装饰器和Python中的临时名称绑定
我现在正在学习Python中的装饰器,这句话真让我困惑。
回答:
我认为这是说装饰函数在应用装饰器之前从未真正分配给名称空间中的任何内容。当你用装饰器写一个函数时,你写的函数作为参数传递给装饰器,然后装饰器返回的对象被视为函数。这里有一个简单的例子:
def dec(func): print('times_two' in globals())
def _inner(*args, **kwargs):
print("Decorated")
return func(*args, **kwargs)
return _inner
@dec
def times_two(x):
return x*2
print('times_two' in globals())
你可以看到这个运行here。 print
的dec
表示False
,因为名称“times_two”在装饰器完成“装饰”功能之前未绑定到任何东西。
以上是 装饰器和Python中的临时名称绑定 的全部内容, 来源链接: utcz.com/qa/259427.html