Pyhton 新手。
今天看教程的时候实验了如下代码:
old = 'abc'
old.replace('a','A')
print old
这里old 并没有被替换,这个我可以理解,因为replace方法返回了一个新的对象,old仍指向原对象。
所以打印的仍然是abc
替换成:
old = 'abc'
new = old.replace('a','A')
print new
即可。
结果就是Abc了。
但是,又想到了这个问题,代码如下:
stu1 = 'Tom'
stu2 = 'John'
classMates = [stu1,stu2]
print classMates
stu2 = 'Marry'
print classMates
结果却是:
['Tom','John']
['Tom','John']
而不是预期的:
['Tom','John']
['Tom','Marry']
如果再对list赋值一次:
classMates = [stu1,stu2]
就可以得到想要的效果。
所以想问的是list创建的时候指向的是stu1和stu2的位置么,为什么stu2中的内容变了list中的不会变呢?
还是像最开始的那个例子一样,产生了一个新的list?现在的classMates没有指向更改后的list而是还是指向原来的list?
谢谢!
Python の代入操作が何を意味するのかを知る必要があります:
a = b
などの最も単純な割り当ては、b
によって参照されるオブジェクトを名前a
に関連付け、名前a
を使用してオブジェクトを参照できるようにすることです。つまり、コードの意味は次のとおりです:
リーリーstu2
には内容はなく、名前だけです。名前はオブジェクトを参照できます。暗記するのではなく理解しましょう! Python は C ではありません! C++ でもありません。
関連する返信を投稿するのを忘れていました。
リーリー
これら 2 つの文は、2 つの文字列オブジェクト「Tom」と「John」を作成し、これら 2 つのオブジェクトの参照を stu1 と stu2 に割り当てます。
リーリー2 つの文字列オブジェクトはリストの要素となり、参照カウントはそれぞれ +1、つまり 2 になります
リーリー「ジョン」参照カウント -1 「結婚」参照カウント +1
リーリー
リストと変数の違いを思い出してください。リストを引用します。 list と list2 は両方とも同じアドレスを指します
変数は参照されません。