課程
/后端開發
/Python
/初識Python
我只是將a重新賦值了啊(賦值不是生成a和1的地址,將a指向1嗎?)?不是因該(2,)?
2015-07-17
源自:初識Python 4-9
正在回答
實際上a=1賦值的時候a的內容就是整數1的地址。
t=(a,)開辟的內存空間中,t有一個地址,t[0]的內容就是a的內容,也就是1的地址。所以輸出的時候跳到1那里輸出1。
a=2賦值改變了a的內容,然而沒有改變t的相關東西,t[0]還是1的地址,print t結果還是(1,)
想要達到你的效果要重新定義t,而重新定義這就算不上是改變tuple了
a=1
t=(a,)
print t
a=2
試了下list里面放變量也是一樣的
b=2
L=[a,b]
a=3
b=4
print L
出來還是[1,2]。所以list或者tuple跟變量結合在可改變性方面好像沒什么意義的樣子。。。
還有如果是這樣
程序會報錯,因為開始定義L的時候并不知道a的地址是啥,a作為一個變量內容還是空的。
這個問題說明一切。。Python中的每次賦值都是生成一個新額的變量,so 此a非彼a。list類似C++的vector或java的Arraylist之類的。其實現應該是存儲的指針數組,tuple是常量指針,所有指向不可修改,但不是說其中的元素不可修改。當然比如1,2這些最小例子本身就不可修改,這是不可修改的。而list本身是可變對象,可以修改其中的指向。
和題主有同樣的疑惑。求解答
t(a,)即t只有一個元素地址是[0],存在這個地址里面的最小分子是'a'...a已經是最終的粒子了 不能改變了, ?課程中之所以改變是因為List本身是個容器 里面盛放的東西可以被替換
749264幽殤
akira1990 回復 749264幽殤
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-12-30
實際上a=1賦值的時候a的內容就是整數1的地址。
t=(a,)開辟的內存空間中,t有一個地址,t[0]的內容就是a的內容,也就是1的地址。所以輸出的時候跳到1那里輸出1。
a=2賦值改變了a的內容,然而沒有改變t的相關東西,t[0]還是1的地址,print t結果還是(1,)
想要達到你的效果要重新定義t,而重新定義這就算不上是改變tuple了
a=1
t=(a,)
print t
a=2
t=(a,)
print t
試了下list里面放變量也是一樣的
a=1
b=2
L=[a,b]
a=3
b=4
print L
出來還是[1,2]。所以list或者tuple跟變量結合在可改變性方面好像沒什么意義的樣子。。。
還有如果是這樣
L=[a,b]
a=1
b=2
程序會報錯,因為開始定義L的時候并不知道a的地址是啥,a作為一個變量內容還是空的。
2015-09-17
2015-08-08
和題主有同樣的疑惑。求解答
2015-07-29
t(a,)即t只有一個元素地址是[0],存在這個地址里面的最小分子是'a'...a已經是最終的粒子了 不能改變了, ?課程中之所以改變是因為List本身是個容器 里面盛放的東西可以被替換