python數(shù)據(jù)類(lèi)型分別有整數(shù)int / 浮點(diǎn)數(shù)float / 布爾值bool / 元組tuple / 列表list / 字典dict,其中數(shù)據(jù)類(lèi)型分為兩個(gè)大類(lèi),一種是可變數(shù)據(jù)類(lèi)型;一種是不可變數(shù)據(jù)類(lèi)型,兩者有什么區(qū)別呢?
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了定州免費(fèi)建站歡迎大家使用!
在講解python可變數(shù)據(jù)類(lèi)型和不可變數(shù)據(jù)類(lèi)型之前需要先普及一下內(nèi)存相關(guān)的簡(jiǎn)單知識(shí)!
在python編程的時(shí)候,代碼中的變量實(shí)際上都是存儲(chǔ)在計(jì)算機(jī)內(nèi)存中,當(dāng)然這里指的內(nèi)存在計(jì)算機(jī)中是虛擬的,你看不見(jiàn)摸不著!每一個(gè)內(nèi)存都有一個(gè)對(duì)應(yīng)的內(nèi)存地址,講到這里需要再次介紹一個(gè)python內(nèi)置函數(shù)id(),該函數(shù)可以用于獲取內(nèi)存地址!獲取內(nèi)存地址方法如下:
1 2 3 4 5 6 | if__name__=="__main__": a=10 b=20 print("a的數(shù)據(jù)類(lèi)型是:{} 地址:{}".format(type(a),id(a))) print("b的數(shù)據(jù)類(lèi)型是:{} 地址:{}".format(type(b),id(b))) |
輸出結(jié)果:
1 2 | a的數(shù)據(jù)類(lèi)型是: b的數(shù)據(jù)類(lèi)型是: |
分析下上面代碼:定義了局部變量a和b,python會(huì)自動(dòng)給局部變量分配內(nèi)存,分別用來(lái)存放整數(shù)10和20,并通過(guò)內(nèi)置函數(shù)id()獲取內(nèi)存地址!關(guān)于內(nèi)存這里不做過(guò)多介紹,你需要記住的是:每一個(gè)內(nèi)存都有一個(gè)一個(gè)對(duì)應(yīng)的內(nèi)存地址,分配的內(nèi)存在程序結(jié)束時(shí)由系統(tǒng)自動(dòng)回收!
python數(shù)據(jù)類(lèi)型分別有整數(shù)int / 浮點(diǎn)數(shù)float / 布爾值bool / 元組tuple / 列表list / 字典dict,這是python開(kāi)發(fā)中最常用的數(shù)據(jù)類(lèi)型!
可變數(shù)據(jù)類(lèi)型:當(dāng)該數(shù)據(jù)類(lèi)型對(duì)應(yīng)的變量的值發(fā)生了變化時(shí),如果它對(duì)應(yīng)的內(nèi)存地址不發(fā)生改變,那么這個(gè)數(shù)據(jù)類(lèi)型就是 可變數(shù)據(jù)類(lèi)型。
不可變數(shù)據(jù)類(lèi)型:當(dāng)該數(shù)據(jù)類(lèi)型對(duì)應(yīng)的變量的值發(fā)生了變化時(shí),如果它對(duì)應(yīng)的內(nèi)存地址發(fā)生了改變,那么這個(gè)數(shù)據(jù)類(lèi)型就是 不可變數(shù)據(jù)類(lèi)型。
總結(jié):可變數(shù)據(jù)類(lèi)型更改值后,內(nèi)存地址不發(fā)生改變;不可變數(shù)據(jù)類(lèi)型更改值后,內(nèi)存地址發(fā)生改變。
不可變數(shù)據(jù)類(lèi)型:數(shù)值類(lèi)型(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:何以解憂(yōu) @Blog(個(gè)人博客地址): shuopython.com @WeChat Official Account(微信公眾號(hào)):猿說(shuō)python @Github:www.github.com @File:python_variable.py @Time:2019/10/24 21:25 @Motto:不積跬步無(wú)以至千里,不積小流無(wú)以成江海,程序人生的精彩需要堅(jiān)持不懈地積累! """ #整形變量 a=10 print("整形變量a修改之前地址:{}".format(id(a))) a=20 print("整形變量a修改之后地址:{}".format(id(a))) print("***"*20) #浮點(diǎn)數(shù)變量 a=10.5 print("浮點(diǎn)數(shù)變量a修改之前地址:{}".format(id(a))) a=20.2 print("浮點(diǎn)數(shù)變量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) #元組的數(shù)據(jù)不能修改,否則會(huì)報(bào)錯(cuò) |
輸出結(jié)果:
1 2 3 4 5 6 7 8 9 10 11 12 | 整形變量a修改之前地址:1994744256 整形變量a修改之后地址:1994744576 ************************************************************ 浮點(diǎn)數(shù)變量a修改之前地址:2713286559088 浮點(diǎn)數(shù)變量a修改之后地址:2713286559136 ************************************************************ 字符串變量a修改之前地址:2713269294224 字符串變量a修改之后地址:2713269272112 ************************************************************ 布爾值a修改之前地址:1994252480 布爾值a修改之后地址:1994252448 ************************************************************ |
可變數(shù)據(jù)類(lèi)型: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( |