首頁常見問題正文

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

更新時間:2023-05-15 來源:黑馬程序員 瀏覽量:

IT培訓班

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

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

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

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

  2.字符串類型 (str)

  3.元組類型 (tuple)

  4.凍結集合類型 (frozenset)

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

  1.列表類型 (list)

  2.字典類型 (dict)

  3.集合類型 (set)

  可以通過一些簡單的代碼演示來說明可變和不可變數(shù)據(jù)類型的區(qū)別:

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

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

t1 = (1, 2, 3)
t2 = t1
# 嘗試修改元組
# t1[0] = 4  # 這行代碼會拋出 TypeError 異常,因為元組是不可變的

# 可變數(shù)據(jù)類型
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也被修改了

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

分享到:
在線咨詢 我要報名
和我們在線交談!