全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)常見(jiàn)問(wèn)題正文

如何區(qū)別可變數(shù)據(jù)類(lèi)型和不可變數(shù)據(jù)類(lèi)型?

更新時(shí)間:2023-05-15 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Python中,數(shù)據(jù)類(lèi)型分為可變和不可變兩種類(lèi)型。簡(jiǎn)單來(lái)說(shuō),可變數(shù)據(jù)類(lèi)型是可以在原地修改的,而不可變數(shù)據(jù)類(lèi)型則不能直接修改,只能通過(guò)重新創(chuàng)建一個(gè)新的對(duì)象來(lái)實(shí)現(xiàn)修改。

  下面是一些常見(jiàn)的Python數(shù)據(jù)類(lèi)型,以及它們是可變還是不可變的:

  一、不可變數(shù)據(jù)類(lèi)型:

  1.數(shù)字類(lèi)型 (int, float, complex)

  2.字符串類(lèi)型 (str)

  3.元組類(lèi)型 (tuple)

  4.凍結(jié)集合類(lèi)型 (frozenset)

  二、可變數(shù)據(jù)類(lèi)型:

  1.列表類(lèi)型 (list)

  2.字典類(lèi)型 (dict)

  3.集合類(lèi)型 (set)

  可以通過(guò)一些簡(jiǎn)單的代碼演示來(lái)說(shuō)明可變和不可變數(shù)據(jù)類(lèi)型的區(qū)別:

# 不可變數(shù)據(jù)類(lèi)型
a = 5
b = a
a = a + 1
print(a)  # 輸出 6
print(b)  # 輸出 5,b并沒(méi)有被修改

s1 = "hello"
s2 = s1
s1 = s1 + " world"
print(s1)  # 輸出 "hello world"
print(s2)  # 輸出 "hello",s2并沒(méi)有被修改

t1 = (1, 2, 3)
t2 = t1
# 嘗試修改元組
# t1[0] = 4  # 這行代碼會(huì)拋出 TypeError 異常,因?yàn)樵M是不可變的

# 可變數(shù)據(jù)類(lèi)型
lst1 = [1, 2, 3]
lst2 = lst1
lst1.append(4)
print(lst1)  # 輸出 [1, 2, 3, 4]
print(lst2)  # 輸出 [1, 2, 3, 4],lst2也被修改了

d1 = {"name": "Alice", "age": 30}
d2 = d1
d1["age"] = 31
print(d1)  # 輸出 {"name": "Alice", "age": 31}
print(d2)  # 輸出 {"name": "Alice", "age": 31},d2也被修改了

  我們可以看到,對(duì)于不可變數(shù)據(jù)類(lèi)型,賦值給另一個(gè)變量后,對(duì)原變量的修改不會(huì)影響到另一個(gè)變量;而對(duì)于可變數(shù)據(jù)類(lèi)型,賦值給另一個(gè)變量后,對(duì)原變量的修改會(huì)影響到另一個(gè)變量。

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!