2020-03-27

anond:20200327115842

グローバル変数と同じ変数名に代入しようとすると

「代入するってことはローカル変数だな」

解釈が変わる

それで右辺のaがローカル変数扱いになる

代入しつつグローバル変数扱いするためには

global a

を入れる必要がある

a = [1, 2, 3]
def b():
    global a
    a = [a[i]+1 for i in range(3)]
    print(a)
b()
記事への反応 -
  • 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が定義されてるよね 次に、関数bのスコープでもaを定義してしまっている これによってグローバルのaが遮蔽されてしまった

    • 乞食は死ね

    • うんち

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

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