a = [1, 2, 3]a = [a[i]+1 for i in range(3)]print(a) # [2, 3, 4] リスト内包表記ってこう書くじゃん? a = [1, 2, 3]a = [a[i]+1 for i in range(3)]def b(): print(a)b() # [2, 3, 4] これでも問題ないじゃん? a = [1, 2, 3]def b(...
うんち
スコープのせいだよ まずグローバルスコープにaが定義されてるよね 次に、関数bのスコープでもaを定義してしまっている これによってグローバルのaが遮蔽されてしまった
グローバル変数と同じ変数名に代入しようとすると 「代入するってことはローカル変数だな」 と解釈が変わる それで右辺のaがローカル変数扱いになる 代入しつつグローバル変数扱いす...
ありがとう!pythonにそんな書き方あったんだ...
乞食は死ね