→ uranusjr: 用 list[:] 可以拷貝 07/15 10:28
→ uranusjr: Python 的 = 都是 pointer assignment, 不會隱性拷貝 07/15 10:29
→ tyc5116: 我在func內加了__list = _List,我看這兩個List的記憶體 07/15 10:32
→ tyc5116: 並不是指向同一位置阿 07/15 10:32
→ bibo9901: 記憶體? 你怎麼"看"? 如果是 id() 那一定是一樣的 07/15 10:35
→ tyc5116: 喔喔...我誤會了,謝謝 07/15 10:36
推 left: 當python寫下a=b時,實際上他表示的不是你過去認知的樣子 07/15 12:47
→ left: a=b的意思是: 變數a參考變數b所指向的物件 07/15 12:48
→ left: 如果b本身直接是一個物件那麼,例如a=[],那麼a就是直接參考 07/15 12:49
→ left: 記憶體裡面所佔據的那個物件 07/15 12:50
推 left: 然後python 物件又分 mutable以及immutable 07/15 12:52
→ left: mutable的意思是物件本身可不可以更改,基本上list是mutable 07/15 12:53
→ left: 一般整數變數是immutable 07/15 12:54
→ left: mutable我在講清楚一點好了 mutable代表物件本身可以擴增 07/15 12:56
→ left: 所以在你的例子裡_List它本身可以擴增,但如果你把 07/15 12:58
→ left: _List.append('a')改成 _List=['b']那麼,_List就會指向['b'] 07/15 12:59
→ left: 外面傳進來的list物件此時不會受到影響 07/15 13:01
→ left: 這個樣的情況就會跟你func2的例子一樣,func2裡面的_int 07/15 13:03
→ left: 會指向新的結果物件。 07/15 13:04