python賦值引用
① python賦值問題
就是說賦值時,如果對象是可變的,那麼這個變數就是這個對象的一個引用,等號兩邊指向的是同一個對象,改變其中一個,另一個變數也改變了
② python3.2.3怎麼引用賦值了的變數
先解釋第三行中中括弧。
python的語法裡面,中括弧可以表示index。t[1]
就表示
t
這個
list
的第一項。
再解釋
int
和
list
變數賦值的問題。
第三行中,l=t[1],意思就是給
t
這個
list
的第一項起了個別名叫做
l。
這就好比給張三起了個名字叫小明,下文里不論提到張三還是小明,說的都是同一個人。
那麼在第四行里
l[0]='d'
其實就等價於
t[1][0]
=
'd',相當於改變了list的內容。
這在編程里叫做aliasing,python
的
list
都是有aliasing的,但是
int
(整數)沒有。
所以,在第二段中,把
x
放到
m
這個
list
里的時候,只是拷貝進去了一個數值,從此以後和
x
不再有關聯了。
這就好比做了個張三的克隆人,那個克隆人後來怎樣,跟張三都沒什麼關系了。
第15-18行也是一樣的道理。
如果,把那幾行改為a=[4];
b=a;
b[0]=5;
print
a;
這時就會打出5來了。
綜上所述,造成第一段和第二段區別的主要原因就是它們涉及的數據類型不同,list
=
起別名,
int
=克隆人。
③ python 賦值就是引用怎麼理解
一切是對象的解釋:列表、字典這些不用說了,有方法,有屬性肯定是對象,一些簡單數據的對象機制好像是通過類似Java等語言的自動裝箱機制提供的,在需要的時候自動轉換成對象,享有對象的方法和屬性。
④ python賦值問題
你漏了另一個知識點:可變變數和不可變變數。
數值屬於不可變變數,比如數值1,一個程序中,內存中只用一個地址來保存它,不管有多少個變數,賦值為1,都只是指向這個變數。
變數重新賦值,只是把指向變更了,
⑤ python賦值問題
我是這么理解的。
x,y,z=1,2,3 其實這是元組賦值,可以寫成(x,y,z=1,2,3),對應位置的變數獲得對應的值。
其中需要說明的是1,2,3是對象,x,y,z是引用。
在執行x,y=y,x時,y,x這個元組其實已經被轉換為2,1了,然後直行賦值後,引用x指向了對象2,引用y指向了對象1。例如:
>>> x,y,z=1,2,3
>>> id(x)
3508720
>>> id(y)
3508708
>>> id(z)
3508696
>>> x,y=y,x
>>> id(x)
3508708
>>> id(y)
3508720
>>>
⑥ python中的賦值,什麼時候是傳值什麼時候是傳址
和其他語言不一樣,傳遞參數的時候,python不允許程序員選擇採用傳值還是傳引用。
Python參數傳遞採用的肯定是「傳對象引用」的方式。實際上,這種方式相當於傳值和傳引用的一種綜合。如果函數收到的是一個可變對象(比如字典或者列表)的引用,就能修改對象的原始值--相當於通過「傳引用」來傳遞對象。如果函數收到的是一個不可變對象(比如數字、字元或者元組)的引用,就不能直接修改原始對象--相當於通過「傳值'來傳遞對象。
python一般內部賦值變數的話,都是傳個引用變數,和C語言的傳地址的概念差不多。可以用id()來查詢內存地址
如果a=b的話, a和b的地址是相同的;如果只是想拷貝,那麼就得用 a=b[:]。
⑦ python如何給變數賦值
題主你好,
python中變數賦值的語法為:
key = value
-----
舉例來說, 我給name賦值為張三:
可以看到當將變數name作為print()函數的參數,可以正常輸出變數name的值.
-----
希望可以幫到題主, 歡迎追問.
⑧ Python裡面如何拷貝一個對象(賦值,淺拷貝,深拷貝的區別)
賦值(=):就是創建了對象的一個新的引用,修改其中任意一個變數都會影響到另一個。
淺拷貝:創建一個新的對象,但它包含的是對原始對象中包含項的引用(如果用引用的方式修改其中一個對象,另外一個也會修改改變){1,完全切片方法;2,工廠函數,如list();3,模塊的()函數}
深拷貝:創建一個新的對象,並且遞歸的復制它所包含的對象(修改其中一個,另外一個不會改變){模塊的deep.deep()函數}
⑨ python賦值是什麼
python賦值是將某一數值賦給某個變數的過程。
將確定的數值賦給變數的語句叫做賦值語句。各程序設計語言有自己的賦值語句,賦值語句也有不同的類型。所賦「值」可以是數字,也可以是字元串和表達式。注意很多語言都使用「等於號」(即「=」)來作為賦值號,所以可能和和平時的理解不同,在使用的時候應予以注意。
python賦值語句介紹:
賦值語句的左邊是一個變數,右邊是一個可計算得到某個值的表達式,表達式的值將會被存儲到該變數中。
第一次給變數賦值時,會創建變數並使用那個值進行初始化。定義之後,該變數就可以在另一個語句中使用了,例如:print(cansPerPack),會輸出cansPerPack變數中存儲的值。
⑩ Python中的賦值,淺拷貝和深拷貝的區別
賦值(=),就是創建了對象的一個新的引用,修改其中任意一個變數都會影響到另一個。
淺拷貝:創建一個新的對象,但它包含的是對原始對象中包含項的引用(如果用引用的方式修改其中一個對象,另外一個也會修改改變){1,完全切片方法;2,工廠函數,如list();3,模塊的()函數}
深拷貝:創建一個新的對象,並且遞歸的復制它所包含的對象(修改其中一個,另外一個不會改變){模塊的deep.deep()函數}