您好,登錄后才能下訂單哦!
python數據類型分別有整數int / 浮點數float / 布爾值bool / 元組tuple / 列表list / 字典dict,其中數據類型分為兩個大類,一種是可變數據類型;一種是不可變數據類型,兩者有什么區別呢?
?
?
在講解python可變數據類型和不可變數據類型之前需要先普及一下內存相關的簡單知識!
在python編程的時候,代碼中的變量實際上都是存儲在計算機內存中,當然這里指的內存在計算機中是虛擬的,你看不見摸不著!每一個內存都有一個對應的內存地址,講到這里需要再次介紹一個python內置函數id(),該函數可以用于獲取內存地址!獲取內存地址方法如下:
1 2 3 4 5 6 | if __name__ == "__main__": ? ????a = 10 ????b = 20 ????print("a的數據類型是:{} 地址:{}".format(type(a),id(a))) ????print("b的數據類型是:{} 地址:{}".format(type(b), id(b))) |
輸出結果:
1 2 | a的數據類型是:<class 'int'> 地址:1994744256 b的數據類型是:<class 'int'> 地址:1994744576 |
分析下上面代碼:定義了局部變量a和b,python會自動給局部變量分配內存,分別用來存放整數10和20,并通過內置函數id()獲取內存地址!關于內存這里不做過多介紹,你需要記住的是:每一個內存都有一個一個對應的內存地址,分配的內存在程序結束時由系統自動回收!
?
python數據類型分別有整數int / 浮點數float / 布爾值bool / 元組tuple / 列表list / 字典dict,這是python開發中最常用的數據類型!
?
可變數據類型:當該數據類型對應的變量的值發生了變化時,如果它對應的內存地址不發生改變,那么這個數據類型就是 可變數據類型。
不可變數據類型:當該數據類型對應的變量的值發生了變化時,如果它對應的內存地址發生了改變,那么這個數據類型就是 不可變數據類型。
總結:可變數據類型更改值后,內存地址不發生改變;不可變數據類型更改值后,內存地址發生改變。
?
不可變數據類型:數值類型(int、float、bool)、string(字符串)、tuple(元組)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個人博客地址): shuopython.com @WeChat Official Account(微信公眾號):猿說python @Github:www.github.com ? @File:python_variable.py @Time:2019/10/24 21:25 ? @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! """ ? ? #整形變量 a = 10 print("整形變量a修改之前地址:{}".format(id(a))) a = 20 print("整形變量a修改之后地址:{}".format(id(a))) print("***"*20) ? #浮點數變量 a = 10.5 print("浮點數變量a修改之前地址:{}".format(id(a))) a = 20.2 print("浮點數變量a修改之后地址:{}".format(id(a))) print("***"*20) ? ? #字符串變量 a = "hello" print("字符串變量a修改之前地址:{}".format(id(a))) a = "world" print("字符串變量a修改之后地址:{}".format(id(a))) print("***"*20) ? #布爾值變量 a = False print("布爾值a修改之前地址:{}".format(id(a))) a = True print("布爾值a修改之后地址:{}".format(id(a))) print("***"*20) ? #元組的數據不能修改,否則會報錯 |
輸出結果:
1 2 3 4 5 6 7 8 9 10 11 12 | 整形變量a修改之前地址:1994744256 整形變量a修改之后地址:1994744576 ************************************************************ 浮點數變量a修改之前地址:2713286559088 浮點數變量a修改之后地址:2713286559136 ************************************************************ 字符串變量a修改之前地址:2713269294224 字符串變量a修改之后地址:2713269272112 ************************************************************ 布爾值a修改之前地址:1994252480 布爾值a修改之后地址:1994252448 ************************************************************ |
?
可變數據類型:list(列表)、dict(字典)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #列表 a = list() print("列表a修改之前地址:{}".format(id(a))) a.append(20) print(
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。 |