中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么在python中實現變量賦值

發布時間:2021-05-20 16:36:34 來源:億速云 閱讀:162 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么在python中實現變量賦值,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一、可變對象和不可變對象

Python在heap中分配的對象分成兩類:可變對象和不可變對象。所謂可變對象是指,對象的內容可變,而不可變對象是指對象內容不可變。

不可變(immutable):int、字符串(string)、float、(數值型number)、元組(tuple)

可變(mutable):字典型(dictionary)、列表型(list)

不可變類型特點:

看下面的例子(例1)

i = 73 
i += 2

怎么在python中實現變量賦值

從上圖可知,不可變對象的特征沒有變,變的只是創建了新對象,改變了變量的對象引用。

看一個例子(例2)   

>>>x = 1
>>>y = 1
>>>z = 1
>>> x is y
True
>>>y is z
True

如上所示,因為整數為不可變,x,y,z在內存中均指向一個值為1的內存地址,也就是說,x,y,z均指向的是同一個地址,值得注意的是,整形來說,目前僅支持(-1,100)。

總結一下,不可變對象的優缺點。

優點是,這樣可以減少重復的值對內存空間的占用。

缺點呢,如例1所示,我要修改這個變量綁定的值,如果內存中沒用存在該值的內存塊,那么必須重新開辟一塊內存,把新地址與變量名綁定。而不是修改變量原來指向的內存塊的值,這回給執行效率帶來一定的降低。

下面看一個可變對象的例子(例3)   

m=[5,9]
m+=[6]

怎么在python中實現變量賦值

二、函數參數:

Python函數參數對于可變對象,函數內對參數的改變會影響到原始對象;對于不可變對象,函數內對參數的改變不會影響到原始參數。原因在于:

1、可變對象,參數改變的是可變對象,其內容可以被修改。

2、不可變對象,改變的是函數內變量的指向對象。

比如存在2個列表 a 和 b

如果a=b的話, a和b的地址是相同的;如果只是想拷貝,那么就得用 a=b[:]

def mutable(b = []): #函數使用了缺省變量
  b.append(0)
  return b
>>>mutable()
[0]
>>>mutable()
[0,0]
>>>mutable()
[0,0,0]

這里連續三次以缺省值,運行函數3此,每次的結果都不一樣,按我們的想想,三次的結果,應該是一樣的,都為[0],但是…

那么原因是什么呢,前面說過,一切皆為對象,函數mutable也為一個對象,使用dir()查看函數的屬性:

dir(mutable)

['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',

上面我們三次運行了mutable這個函數,如果用mutable.__defaults__來查看函數對象的默認參數變化的話,就會發現問題了。

>>>mutable.__defaults__
([],)
>>>mutable()
[0]
>>>mutable.__defaults__
([0],)
>>>mutable()
[0,0]
>>>mutable.__defaults__
([0,0],)

仔細觀察,類對象內部屬性dict中'x'對應的值,在每創建一個對象時都發生了變化。也就是說,在每次創建類對象時,變量x引用內存的初始值是不同的,這終要歸因于列表(list)的可變性導致的。每次創建對象時,因為列表的可變性,函數對象b的dict屬性中,x鍵對應的值,被改變,而不是重新創建,所以出現了上面的結果。

python可以做什么

Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。

上述就是小編為大家分享的怎么在python中實現變量賦值了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

富裕县| 安吉县| 兴隆县| 商南县| 南昌县| 永靖县| 富蕴县| 萨迦县| 利川市| 疏附县| 随州市| 澎湖县| 西充县| 葵青区| 象山县| 陕西省| 汾阳市| 清水河县| 雅安市| 乌兰县| 休宁县| 兴国县| 滨州市| 鹤山市| 惠来县| 北流市| 漯河市| 那坡县| 梁山县| 沁源县| 秀山| 南丹县| 齐齐哈尔市| 于都县| 溧阳市| 和静县| 郯城县| 独山县| 通州市| 儋州市| 白银市|