2020-03-27

python有識者教えてほしい

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 = [a[i]+1 for i in range(3)]
    print(a)
b()

これだとエラー

なんで??

  • スコープのせいだよ まずグローバルスコープにaが定義されてるよね 次に、関数bのスコープでもaを定義してしまっている これによってグローバルのaが遮蔽されてしまった

  • グローバル変数と同じ変数名に代入しようとすると 「代入するってことはローカル変数だな」 と解釈が変わる それで右辺のaがローカル変数扱いになる 代入しつつグローバル変数扱いす...

  • 乞食は死ね

  • うんち

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん