以下のコードでは、変数cntに代入があるため、
" local variable 'cnt' referenced before assignment "
のエラーが出ます。
しかし、cntをコメントアウトすれば、lstにはきちんとappendされていきます。
Python
1lst = [] 2cnt = 0 3def func(n): 4 if n == 0: 5 return 6 7 lst.append(n) 8 cnt += 1 9 10 return func(n - 1) 11 12if __name__ == "__main__": 13 func(5) 14 print(lst)
これは、lst.appendが代入ではなく、参照ということなのでしょうか?
lstそのものが、別のリストや値に置き換わっているわけではないので、代入ではないことはわかるのですが、
appendされた時点で、lstの内容は変わるわけなので、エラーが出そうな気がしてならないです。
なぜ、lst.appendの場合はグローバル変数として上手く扱えるのでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。