溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python 可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型

發(fā)布時間:2020-03-06 12:59:51 來源:網(wǎng)絡 閱讀:372 作者:qq5d6f345f0205e 欄目:編程語言

python數(shù)據(jù)類型分別有整數(shù)int / 浮點數(shù)float / 布爾值bool / 元組tuple / 列表list / 字典dict,其中數(shù)據(jù)類型分為兩個大類,一種是可變數(shù)據(jù)類型;一種是不可變數(shù)據(jù)類型,兩者有什么區(qū)別呢?

?

python 可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型

?

一.關于內存

在講解python可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型之前需要先普及一下內存相關的簡單知識!

在python編程的時候,代碼中的變量實際上都是存儲在計算機內存中,當然這里指的內存在計算機中是虛擬的,你看不見摸不著!每一個內存都有一個對應的內存地址,講到這里需要再次介紹一個python內置函數(shù)id(),該函數(shù)可以用于獲取內存地址!獲取內存地址方法如下:

1

2

3

4

5

6

if __name__ == "__main__":

?

????a = 10

????b = 20

????print("a的數(shù)據(jù)類型是:{} 地址:{}".format(type(a),id(a)))

????print("b的數(shù)據(jù)類型是:{} 地址:{}".format(type(b), id(b)))

輸出結果:

1

2

a的數(shù)據(jù)類型是:<class 'int'> 地址:1994744256

b的數(shù)據(jù)類型是:<class 'int'> 地址:1994744576

分析下上面代碼:定義了局部變量a和b,python會自動給局部變量分配內存,分別用來存放整數(shù)10和20,并通過內置函數(shù)id()獲取內存地址!關于內存這里不做過多介紹,你需要記住的是:每一個內存都有一個一個對應的內存地址,分配的內存在程序結束時由系統(tǒng)自動回收!

python 可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型

?

二.可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型

python數(shù)據(jù)類型分別有整數(shù)int / 浮點數(shù)float / 布爾值bool / 元組tuple / 列表list / 字典dict,這是python開發(fā)中最常用的數(shù)據(jù)類型!

?

1.可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型區(qū)別

可變數(shù)據(jù)類型:當該數(shù)據(jù)類型對應的變量的值發(fā)生了變化時,如果它對應的內存地址不發(fā)生改變,那么這個數(shù)據(jù)類型就是 可變數(shù)據(jù)類型。

不可變數(shù)據(jù)類型:當該數(shù)據(jù)類型對應的變量的值發(fā)生了變化時,如果它對應的內存地址發(fā)生了改變,那么這個數(shù)據(jù)類型就是 不可變數(shù)據(jù)類型。

總結:可變數(shù)據(jù)類型更改值后,內存地址不發(fā)生改變;不可變數(shù)據(jù)類型更改值后,內存地址發(fā)生改變。

?

2.不可變數(shù)據(jù)類型

不可變數(shù)據(jù)類型:數(shù)值類型(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)

?

#浮點數(shù)變量

a = 10.5

print("浮點數(shù)變量a修改之前地址:{}".format(id(a)))

a = 20.2

print("浮點數(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ù)不能修改,否則會報錯

輸出結果:

1

2

3

4

5

6

7

8

9

10

11

12

整形變量a修改之前地址:1994744256

整形變量a修改之后地址:1994744576

************************************************************

浮點數(shù)變量a修改之前地址:2713286559088

浮點數(shù)變量a修改之后地址:2713286559136

************************************************************

字符串變量a修改之前地址:2713269294224

字符串變量a修改之后地址:2713269272112

************************************************************

布爾值a修改之前地址:1994252480

布爾值a修改之后地址:1994252448

************************************************************

?

3.可變數(shù)據(jù)類型

可變數(shù)據(jù)類型:list(列表)、dict(字典)


<big id="aafhi"></big>

    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(

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

    AI