日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python面试】 说说Python可变与不可变数据类型?

發布時間:2024/9/15 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python面试】 说说Python可变与不可变数据类型? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

往期面試題:

說說Python變量、函數、類的命名規則?

說說4種常用編碼的區別?

說說Python面向對象三大特性?

說說Python中有幾種數據類型?

廢話不多說,開始今天的題目:

問:說說Python可變與不可變數據類型的區別?

答:Python中看可變與不可變數據類型,主要是看變量所指向的內存地址處的值是否會改變 。?Python 的六種標準數據類型:數字、字符串、列表、元組、字典、集合。

不可變數據(3個):Number(數字)、String(字符串)、Tuple(元組)。

可變數據(3個):List(列表)、Dictionary(字典)、Set(集合)。

下面分別來說說這兩者的具體區別:

1、可變數據類型

可變數據類型:變量所指向的內存地址處的值是可以被改變的

本文例子參考如下鏈接:

https://www.cnblogs.com/big-devil/p/7625898.html

使用可變數據類型中的列表 list 為例:

>>> a = [1, 2, 3]
>>> id(a)
41568816??
>>> a = [1, 2, 3]
>>> id(a)
41575088??
>>> a.append(4)
>>> id(a)
41575088??
>>> a += [2]
>>> id(a)
41575088??
>>> a
[1, 2, 3, 4, 2]

從上面的程序中可以看出,進行兩次a = [1, 2, 3]操作,兩次a引用的地址值是不同的,也就是說其實創建了兩個不同的對象,這一點明顯不同于不可變數據類型,所以對于可變數據類型來說,具有同樣值的對象是不同的對象,即在內存中保存了多個同樣值的對象,地址值不同。

接著我們對列表進行添加操作,分別a.append(4)和a += [2],發現這兩個操作使得a引用的對象值變成了上面的最終結果,但是a引用的地址依舊是41575088,也就是說對a進行的操作不會改變a引用的地址值,只是在地址后面又擴充了新的地址,改變了地址里面存放的值。

所以可變數據類型的意思就是說對一個變量進行操作時,其值是可變的,值的變化并不會引起新建對象,即地址是不會變的,只是地址中的內容變化了或者地址得到了擴充。

圖1?python可變數據類型分析

2、不可變數據類型

不可變數據類型:變量所指向的內存地址處的值是不可以被改變。?

使用不可變數據類型中的 int 為例:

>>> x = 1??
>>> id(x)
31106520??
>>> y = 1??
>>> id(y)
31106520??
>>> x = 2??
>>> id(x)
31106508??
>>> y = 2??
>>> id(y)
31106508??
>>> z = y
>>> id(z)
31106508??
>>> x += 2??
>>> id(x)
31106484

上面這段程序,我們先來看x = 1和y = 1兩個操作的結果,從上面的輸出可以看到x和y在此時的地址值是一樣的,也就是說x和y其實是引用了同一個對象,也就是說內存中對于1只占用了一個地址,而不管有多少個引用指向了它,都只有一個地址值,只是有一個引用計數會記錄指向這個地址的引用到底有幾個而已。

當我們進行x = 2賦值時,發現x的地址值變了,雖然還是x這個引用,但是其地址值卻變化了,后面的y = 2以及z = y,使得x、y和z都引用了同一個對象,即2,所以地址值都是一樣的。

當x和y都被賦值2后,1這個對象已經沒有引用指向它了,所以1這個對象占用的內存,即31106520地址要被“垃圾回收”,即1這個對象在內存中已經不存在了。最后,x進行了加2的操作,所以創建了新的對象4,x引用了這個新的對象,而不再引用2這個對象。

圖2?python不可變數據類型分析

如果對于參考答案有不認同的,大家可以在評論區指出和補充,歡迎留言!

總結

以上是生活随笔為你收集整理的【Python面试】 说说Python可变与不可变数据类型?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。