溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中對不可變類型的變量重新賦值的方法

發(fā)布時間:2020-07-09 09:32:59 來源:億速云 閱讀:374 作者:清晨 欄目:開發(fā)技術

這篇文章將為大家詳細講解有關python中對不可變類型的變量重新賦值的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

本文以Python3為例,包括六種數據類型:

1、數字(Number):
        int整型
        long長整型
        float浮點數
        complex復數
        布爾值(0和1)
2、字符串(String)
3、列表(List)
4、元組(Tuple)
5、字典(Dictionary)
6、集合(Set)

通過id函數查看變量i的內存地址進行驗證(使用hex(id(i)) 可以查看16進制的內存地址)

不可變類型:Number、String、Tuple

對不可變類型的變量重新賦值,實際上是重新創(chuàng)建一個不可變類型的對象,并將原來的變量重新指向新創(chuàng)建的對象(如果沒有其他變量引用原有對象的話(即引用計數為0),原有對象就會被回收)。

對于不可變類型int,無論創(chuàng)建多少個不可變類型,只要值相同,都指向同個內存地址。

例如Number:

>>> number1 = 123
>>> id(number1)
8790928028112
>>> number2 = 123
>>> id(number2)
8790928028112
>>> number3 = 321
>>> id(number3)
49143760
>>>

可以看到執(zhí)行 i += 1 時,內存地址都會變化,因為int 類型是不可變的。

>>> i = 5
>>> id(i)
8791205700368
>>> i += 1
>>> id(i)
8791205700400
>>>
>>> j = i
>>> id(j)
8791205700400
>>> j
6
>>>

可變類型:List、Dictionary、Set

對可變數據類型重新賦值,并沒有創(chuàng)建新的對象。

例如List:

>>> list1 = [1,2,3,4,5]
>>> id(list1)
49307976
>>> list2 = [1,2,3,4,5]
>>> id(list2)
49307784
>>> list1.append(123)
>>> list1
[1, 2, 3, 4, 5, 123]
>>> id(list1)
49307976
>>>

如果執(zhí)行l(wèi)ist1=list2,因為list1、list2指向同個內存地址,而list1、list2的類型都是List,可變類型,對list1、list2任意一個List進行修改,都會影響另外一個List的值。

>>> list1
[1, 2, 3, 4, 5, 123]
>>> id(list1)
49307976
>>>
>>> list1 = list2
>>> id(list1)
49307784
>>> id(list2)
49307784
>>> list2
[1, 2, 3, 4, 5]
>>> list2.append(456)
>>> list1
[1, 2, 3, 4, 5, 456]
>>> list2
[1, 2, 3, 4, 5, 456]
>>>

總而言之:

不可變類型是指向值(Value),值不變,則對象不變;值變,則對象變。

可變數據類型是指向名字(Name),名不變,則對象不變;名變,則對象變。

內容擴展:

Python中可變類型和不可變類型的數據?

  1. 可變類型有l(wèi)ist,dict.不可變類型有string,number,tuple.
  2. 當進行修改操作時,可變類型傳遞的是內存中的地址,也就是說,直接修改內存中的值,并沒有開辟新的內存。
  3. 不可變類型被改變時,并沒有改變原內存地址中的值,而是開辟一塊新的內存,將原地址中的值復制過去,對這塊新開辟的內存中的值進行操作。

關于python中對不可變類型的變量重新賦值的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI