溫馨提示×

溫馨提示×

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

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

python的可變和不可變數(shù)據(jù)類型是什么

發(fā)布時間:2021-11-20 16:20:44 來源:億速云 閱讀:513 作者:iii 欄目:編程語言

這篇文章主要講解了“python的可變和不可變數(shù)據(jù)類型是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“python的可變和不可變數(shù)據(jù)類型是什么”吧!

不可變數(shù)據(jù)類型

python中不可變數(shù)據(jù)類型的定義為:當(dāng)該數(shù)據(jù)類型的對應(yīng)變量的值發(fā)生了改變,那么它對應(yīng)的內(nèi)存地址也會發(fā)生改變,就稱不可變數(shù)據(jù)類型,包括:int(整型)、string(字符串)、tuple(元組)

整型

首先我們來看一下整型為什么是不可變數(shù)據(jù)類型。給一個變量x賦值,然后改變這個x的值,輸出前后兩次的內(nèi)存地址id和數(shù)據(jù)類型type

  • id():獲取對象的內(nèi)存地址

  • type():當(dāng)只有一個參數(shù)的時候,返回對象的類型。當(dāng)有三個參數(shù)的時候返回一個類對象。

# 賦值
x = 1
# 打印x的內(nèi)存地址和數(shù)據(jù)類型
print(id(x), type(x))
# 輸出:8791164511056 <class 'int'>
# 改變x的值
x = 2
# 打印改變后的x的內(nèi)存地址和數(shù)據(jù)類型
print(id(x), type(x))
# 輸出:8791164511088 <class 'int'>

從上面的代碼我們可以得出,變量x為整型,且當(dāng)x的值發(fā)生改變的時候,變量的內(nèi)存地址也發(fā)生了改變。所以整型是不可變的數(shù)據(jù)類型。

字符串

根據(jù)上面的實例,我們把變量x的值換成字符串試試,看能不能得出字符串是不可變數(shù)據(jù)類型的結(jié)論呢~

# 賦值
x = 'abcdefg'
# 打印x的內(nèi)存地址和數(shù)據(jù)類型
print(id(x), type(x))
# 輸出:30828000 <class 'str'>
# 改變x的值
x = 'higklmn'
# 打印改變后的x的內(nèi)存地址和數(shù)據(jù)類型
print(id(x), type(x))
# 輸出:30828168 <class 'str'>

代碼中當(dāng)變量改變時,變量的內(nèi)存地址由30828000 變?yōu)榱?0828168 。所以字符串是不可變數(shù)據(jù)類型。

元組

元組被稱為只讀列表,即數(shù)據(jù)可以被查詢,但不能被修改。如果我們強行修改元組中的數(shù)據(jù),會報錯。

t = (1, 2, 3, 4, 5)
# 修改元組的值
t[1] = 100
會報錯:TypeError: 'tuple' object does not support item assignment

可變數(shù)據(jù)類型

python中對可變數(shù)據(jù)類型的定義為:當(dāng)該數(shù)據(jù)類型的對應(yīng)變量的值發(fā)生了改變,那么它對應(yīng)的內(nèi)存地址不發(fā)生改變,就稱可變數(shù)據(jù)類型。包括:set(集合)、list(列表)、dict(字典)

集合

我們先來看一下集合,定義一個集合set1,改變set1的值,且輸出兩次的內(nèi)存地址

set1 = {1, 2, 3, '123'}
print("集合:", set1, "內(nèi)存地址:", id(set1), "\t", "數(shù)據(jù)類型:", type(set1), "\t")
# 輸出:集合: {1, 2, 3, '123'} 內(nèi)存地址: 41388296      數(shù)據(jù)類型: <class 'set'>     
# 給set1添加一個元素
set1.add(100)
print("集合:", set1, "內(nèi)存地址:", id(set1), "\t", "數(shù)據(jù)類型:", type(set1), "\t")
# 輸出:集合: {1, 2, 3, 100, '123'} 內(nèi)存地址: 41388296      數(shù)據(jù)類型: <class 'set'>

從上面代碼我們可以看出,即使一個集合發(fā)生了改變,這個集合的內(nèi)存地址是不變的。所以集合是可變數(shù)據(jù)類型。

列表
list1 = [1, 2, 3, 4, 5]
print("列表:", list1, "內(nèi)存地址:", id(list1), "\t", "數(shù)據(jù)類型:", type(list1), "\t")
# 輸出:列表: [1, 2, 3, 4, 5] 內(nèi)存地址: 1860168      數(shù)據(jù)類型: <class 'list'> 
list1[0] = 100
print("列表:", list1, "內(nèi)存地址:", id(list1), "\t", "數(shù)據(jù)類型:", type(list1), "\t")
# 輸出:列表: [100, 2, 3, 4, 5] 內(nèi)存地址: 1860168      數(shù)據(jù)類型: <class 'list'>

當(dāng)列表中的值發(fā)生了改變時,內(nèi)存地址依舊不變,所以列表是可變數(shù)據(jù)類型。

字典

字典是python中唯一的映射類型,采用鍵值對(key-value)的形式存儲數(shù)據(jù)。字典中的key值必須是可哈希的數(shù)據(jù)類型,也就是整型,字符串,元組等。

dict1 = {'name': 'kkk', 'age': 18}
print("字典:", dict1, "內(nèi)存地址:", id(dict1), "\t", "數(shù)據(jù)類型:", type(dict1), "\t")
# 字典: {'name': 'kkk', 'age': 18} 內(nèi)存地址: 31033960      數(shù)據(jù)類型: <class 'dict'> 
dict1['sex'] = 'man'
print("字典:", dict1, "內(nèi)存地址:", id(dict1), "\t", "數(shù)據(jù)類型:", type(dict1), "\t")
# 字典: {'name': 'kkk', 'age': 18, 'sex': 'man'} 內(nèi)存地址: 31033960      數(shù)據(jù)類型: <class 'dict'>

從上面代碼可以看出,當(dāng)字典中的元素發(fā)生改變時,內(nèi)存地址不變,都是31033960。所以字典是可變數(shù)據(jù)類型。

感謝各位的閱讀,以上就是“python的可變和不可變數(shù)據(jù)類型是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對python的可變和不可變數(shù)據(jù)類型是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

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

AI