【探究】Python可變型別和不可變型別ID的變化
阿新 • • 發佈:2018-12-13
# 不可變型別 print("#"*50) print("不可變型別:") print("元組測試:") tuple_01 = (123, 456) print("tuple_01的資料為:【%s】 ID為:【%s】" % (tuple_01, id(tuple_01))) tuple_01 = (123, 456) print("修改後:") print("tuple_01的資料為:【%s】 ID為:【%s】" % (tuple_01, id(tuple_01))) print("為空測試:") tuple_01 = () print("tuple_01的資料為:【%s】 ID為:【%s】" % (tuple_01, id(tuple_01))) tuple_01 = () print("修改後:") print("tuple_01的資料為:【%s】 ID為:【%s】" % (tuple_01, id(tuple_01))) print("字串測試:") str_01 = "啦啦啦" print("str_01的資料為:【%s】 ID為:【%s】" % (str_01, id(str_01))) print("修改後:") str_01 = "啦啦啦" print("str_01的資料為:【%s】 ID為:【%s】" % (str_01, id(str_01))) print("為空測試:") str_01 = "" print("str_01的資料為:【%s】 ID為:【%s】" % (str_01, id(str_01))) print("修改後:") str_01 = "" print("str_01的資料為:【%s】 ID為:【%s】" % (str_01, id(str_01))) # 可變型別 print("可變型別:") print("列表測試:") list_01 = [123, 456] print("list_01的資料為:【%s】 ID為:【%s】" % (list_01, id(list_01))) print("修改後:") list_01 = [123, 456] print("list_01的資料為:【%s】 ID為:【%s】" % (list_01, id(list_01))) print("為空測試:") list_01 = [] print("list_01的資料為:【%s】 ID為:【%s】" % (list_01, id(list_01))) print("修改後:") list_01 = [] print("list_01的資料為:【%s】 ID為:【%s】" % (list_01, id(list_01)))
輸出: ################################################## 不可變型別: 元組測試: tuple_01的資料為:【(123, 456)】 ID為:【14206416】 修改後: tuple_01的資料為:【(123, 456)】 ID為:【14206416】 為空測試: tuple_01的資料為:【()】 ID為:【13238320】 修改後: tuple_01的資料為:【()】 ID為:【13238320】 字串測試: str_01的資料為:【啦啦啦】 ID為:【53188552】 修改後: str_01的資料為:【啦啦啦】 ID為:【53188552】 為空測試: str_01的資料為:【】 ID為:【13355424】 修改後: str_01的資料為:【】 ID為:【13355424】 可變型別: 列表測試: list_01的資料為:【[123, 456]】 ID為:【13649320】 修改後: list_01的資料為:【[123, 456]】 ID為:【13650480】 為空測試: list_01的資料為:【[]】 ID為:【13649320】 修改後: list_01的資料為:【[]】 ID為:【13650480】
'''
結論:
不可變型別,只要一定義,後面再次定義相同資料內容,ID不會改變
可變型別定義一次過後,後面再次定義,ID會改變。
不可變型別:數字型別(int、float、bool、complex)、字串、元組
可變型別:列表、字典、集合
'''