前提・実現したいこと
参考書片手に勉強を始めました
下記のコードについて、3つ質問致します
素人な質問でお手数を取って申し訳ないのですが、ご教授願います
python
1 2x = 100 3 4def f(): 5 6 global x 7 8 x += 1 9 10 print(x) 11 12f() 13
発生している問題・エラーメッセージ
【質問1】
実行をすると、
101
となります。合っています。
試しに、f()の次の行にprint(x)と書くと
101
となります
関数外なので、100と表示され
101
100
と連なるものだと想定していました
なぜ101になるのでしょうか?
【質問2】
試しに
python
1x=100 2 3def f(x): 4 x+=1 5 print(x) 6 7f(x) 8 9print(x) 10
と書いて実行すると、
101
100
が得られました。
また、
python
1x=100 2 3def f(): 4 a=x+1 5 print(a) 6 7f() 8 9print(x) 10 11
と書いても同様に
101
100
が得られました
globalキーワードが理解できない場合、これらのやり方で逃げても今後、差支えないのでしょうか?
【質問3】
そもそも、globalを用いずに、
python
1x=100 2 3def f(): 4 x+=1 5 print(x) 6 7f() 8
と書いて、
Traceback (most recent call last):
File "C:/Users/tokumoto/Documents/Python Scripts/def-glo-A.py", line 16, in <module>
f()
File "C:/Users/tokumoto/Documents/Python Scripts/def-glo-A.py", line 8, in f
x += 1
UnboundLocalError: local variable 'x' referenced before assignment
なぜ上記のようなエラーになるのかが、わかりません。
関数内のxに外から100を代入すれば、計算可能に思えます
関数内で一旦、xを定義する必要があるのでしょうか?
で、あれば下記は何故、正常に実行(100)されるのでしょうか?
python
1x=100 2 3def f(): 4 print(x) 5f() 6
回答2件
あなたの回答
tips
プレビュー