a = [1]
def do():
global a
b=a
print b
a[0] = 2
print b
do()
出力: 1 2
「a」がグローバルリストであるという事実と関係があると確信しています。グローバルが変更されたときに変数 b が変更される理由を誰かに説明してもらえますか。そして、どうすればそれが起こらないようにすることができますか?
質問の拡張: 次のようなネストをどのように処理しますか?
a = []
b = []
def do():
global a, b
b.append(a[:])
print a, b
a[0][0] +=1
print a, b
a.append([1])
do()