91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么使用Python中變量

發布時間:2020-08-24 14:57:18 來源:億速云 閱讀:195 作者:Leah 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹怎么使用Python中變量,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

什么是變量?

Python變量與C或C ++中的變量根本不同。事實上,Python甚至沒有變量。Python有名稱,而不是變量。

這可能看起來很迂腐,而且大多數情況下都是如此。大多數時候,將Python名稱視為變量是完全可以接受的,但理解差異很重要。當您在Python中實現棘手的指針時尤其如此。

為了幫助推動差異,可以了解變量如何在C中工作,它們代表什么,然后將其與名稱在Python中的工作方式進行對比。

C中的變量

假設您有以下代碼來定義變量x:

int  x  =  2337 ;

這一行代碼在執行時有幾個不同的步驟:

為整數分配足夠的內存

將值分配2337給該內存位置

指示x指向該值

以簡化的內存視圖顯示,它可能如下所示:

怎么使用Python中變量

X的內存表示(2337)

在這里,您可以看到該變量x具有偽內存位置0x7f1和值2337。如果在程序中稍后要更改其值x,則可以執行以下操作:

x  =  2338 ;

上面的代碼為2338變量分配了一個新的value()x,從而覆蓋了以前的值。這意味著變量x是可變的。更新的內存布局顯示新值:

怎么使用Python中變量

X的新內存表示(2338)

請注意,位置x沒有改變,只是值本身。這是一個重要的觀點。這意味著它x 是內存位置,而不僅僅是它的名稱。

另一種思考這個概念的方法是在所有權方面。從某種意義上說,x擁有內存位置。x首先,它是一個空盒子,它可以恰好適合一個可以存儲整數值的整數。

為值分配值時x,您將在所x擁有的框中放置一個值。如果你想引入一個新的變量(y),你可以添加這行代碼:

int  y  =  x ;

此代碼創建一個名為的新框y,并將值復制x到框中。現在內存布局將如下所示:

怎么使用Python中變量

X(2338)和Y(2338)的內存表示

注意新的位置0x7f5的y。即使將值x復制到y,變量也會y在內存中擁有一些新地址。因此,您可以覆蓋y不影響的值x:

y  =  2339 ;

現在內存布局將如下所示:

怎么使用Python中變量

更新了Y(2339)的代表

同樣,你修改的值y,但不是它的位置。此外,您根本沒有影響原始x變量。這與Python名稱的工作方式形成鮮明對比。

Python中的名稱

Python沒有變量。它有名稱。是的,這是一個迂腐點,你當然可以隨意使用術語變量。重要的是要知道變量和名稱之間存在差異。

讓我們從上面的C示例中獲取等效代碼并將其寫在Python中:

>>> x  =  2337

與C類似,上面的代碼在執行過程中分解為幾個不同的步驟:

創建一個 PyObject

將typecode設置為整數 PyObject

將值設置2337為PyObject

創建一個名為 x

指向x新的PyObject

增加的引用計數PyObject被1

注意:這PyObject與Python不同object。它特定于CPython并表示所有Python對象的基本結構。

PyObject被定義為C結構,所以,如果你想知道為什么你不能打電話typecode或refcount直接,其因為你沒有進入結構直接。方法調用sys.getrefcount()可以幫助獲得一些內部。

在內存中,它可能看起來像這樣:

怎么使用Python中變量

Python的內存中表示(2337)

您可以看到內存布局與之前的C布局截然不同。新創建的Python對象擁有生命中的內存,而不是x擁有值2337所在的內存塊2337。Python名稱x不像C變量在內存中擁有靜態插槽那樣直接擁有任何內存地址x。

如果您嘗試為其分配新值x,可以嘗試以下操作:

>>> x  =  2338

這里發生的事情與C等價物不同,但與Python中的原始綁定沒有太大區別。

這段代碼:

創建一個新的 PyObject

將typecode設置為整數 PyObject

設置值2338的PyObject

點x新PyObject

將new的refcount增加PyObject1

將舊的refcount減少PyObject1

現在在內存中,它看起來像這樣:

怎么使用Python中變量

Python名稱指向新對象(2338)

此圖有助于說明x指向對象的引用,并且不像以前那樣擁有內存空間。它還顯示該x = 2338命令不是賦值,而是將名稱綁定x到引用。

此外,前一個對象(持有該2337值)現在位于內存中,引用計數為0,并將被垃圾收集器清理。

您可以y在C示例中引入一個新名稱:

>>> y  =  x

在內存中,您將擁有一個新名稱,但不一定是新對象:

怎么使用Python中變量

X和Y名稱指向2338

現在,你可以看到一個新的Python對象沒有被創建,只是指向同一個對象的新名稱。此外,對象的refcount增加了一個。您可以檢查對象標識是否相同,以確認它們是否相同:

>>> y is x
True

上面的代碼表明x和y是相同的對象。不過沒錯:y它仍然是不可改變的。

例如,您可以執行以下操作y:

>>> y += 1
>>> y is x
False

添加調用后,將返回一個新的Python對象。現在,內存看起來像這樣:

怎么使用Python中變量

x name和y命名不同的對象

已創建新對象,y現在指向新對象。有趣的是,這是如果你已經綁定到的最終狀態y,以2339直接:

>>> y  =  2339

上述語句導致與添加相同的結束內存狀態。回顧一下,在Python中,您不需要分配變量。而是將名稱綁定到引用。

【Python中的對象】

關于怎么使用Python中變量就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

铁岭县| 吉首市| 武宁县| 阿合奇县| 西丰县| 大厂| 德令哈市| 垫江县| 原阳县| 白城市| 麻城市| 绿春县| 柳河县| 武隆县| 东辽县| 安多县| 昌黎县| 苍梧县| 神木县| 沽源县| 遂宁市| 中超| 库尔勒市| 微山县| 仪征市| 丰原市| 大荔县| 安龙县| 菏泽市| 博湖县| 廉江市| 新巴尔虎右旗| 无锡市| 安西县| 马关县| 衡阳市| 卢龙县| 宣城市| 建水县| 曲阜市| 敦煌市|