我有以下的装饰用的参数:的蟒蛇装饰变量的作用域 - 改变参数
from functools import wraps
def pdecor(p):
def decorator(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
p -= 1
return fn(*args, **wargs)
return wrapper
return decorator
试图用装饰结果:
>>> @pdecor(1)
... def run(): pass
...
>>> run()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in wrapper
UnboundLocalError: local variable 'p' referenced before assignment
>>>
为什么我不能改变p
?
[Python变量作用域问题]的可能重复(http://stackoverflow.com/questions/370357/python-variable-scope-question) – delnan
请参阅http://stackoverflow.com/questions/8447947/is-it - 可以在python中修改变量 - 但不是全局的sc – Dougal