回答問題2:
每當妳給壹個變量賦值時,妳就把這個名字的值存儲在壹個新的內存中。
鎳打印
(id
(壹))
妳會發現每次f(x),a的內存地址都是新的。所以在妳的第二個問題中
和前面的L[]名字不壹樣,所以append上的A是[4,3,3](簡單來說,L=和L=是兩個名字不壹樣的東西)。
討論問題1:
在妳的程序中,a = 1,a = 2,a = 5是int對象的三個實例,所以它們占用了三段不同的內存,在執行程序回收內存時自然會被清理掉;l是通過列表的append方法進行更改時的打印結果。
(f(1))
打印
(f(2))
打印
(f(5))對壹個實例進行操作,所以內存地址保持不變;
相同原因打印
(f(3,))當直接給L賦值時,因為
是壹個新的list實例,內存位置自然會改變。
以上問題的根本原因是python的本質:壹切都是對象。
(賦值的過程是壹個對象的實例化)
看了妳的回答:感覺真的很繞,但是我盡力了。希望妳能理解。如果不了解,請在問題中註明!