関数のなかに書いてあったけど、なにこれ。
結論
「この関数ではグローバル変数を上書きするよ」という宣言。
Pythonでは、関数内から普通にグローバル変数を上書きしようとしてもエラーを吐くようになっている。(グローバル変数の安易な編集を防ぐため)
wallet = 0
def pay(amount):
wallet -= amount
# UnboundLocalError: local variable 'wallet' referenced before assignment
この例では、pay()
関数内でwallet
というグローバル変数から引き算しようとしているので、UnboundLocalError
を引き起こしている。
wallet = 0
def pay(amount):
global wallet
wallet -= amount
これで解決。
おわりに
Pythonくん、こういうところ意外と親切。