1
私はPythonでデコレータのロジックを理解しようとしていますが、ローカル変数のスコープに問題があります。
CODE:Pythonデコレータスコープ
# version #1
def decorator(function):
counter = 0
def wrapper():
print(counter)
function()
return counter
return wrapper
# version #2
def decorator(function):
counter = 0
def wrapper():
counter += 1
function()
return counter
return wrapper
@decorator
def function():
print("Printed from function().")
function()
私の質問は、なぜ#1
作品やcounter
が印刷されているが、私は#2
でcounter
を変更しようとすると、私はUnboundLocalError: local variable 'counter' referenced before assignment
を取得しますか?
ありがとうございます!