中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

怎么使用Python中變量-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)是一家專業(yè)提供且末企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為且末眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

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

什么是變量?

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

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

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

C中的變量

假設(shè)您有以下代碼來(lái)定義變量x:

int  x  =  2337 ;

這一行代碼在執(zhí)行時(shí)有幾個(gè)不同的步驟:

為整數(shù)分配足夠的內(nèi)存

將值分配2337給該內(nèi)存位置

指示x指向該值

以簡(jiǎn)化的內(nèi)存視圖顯示,它可能如下所示:

怎么使用Python中變量

X的內(nèi)存表示(2337)

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

x  =  2338 ;

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

怎么使用Python中變量

X的新內(nèi)存表示(2338)

請(qǐng)注意,位置x沒有改變,只是值本身。這是一個(gè)重要的觀點(diǎn)。這意味著它x 是內(nèi)存位置,而不僅僅是它的名稱。

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

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

int  y  =  x ;

此代碼創(chuàng)建一個(gè)名為的新框y,并將值復(fù)制x到框中?,F(xiàn)在內(nèi)存布局將如下所示:

怎么使用Python中變量

X(2338)和Y(2338)的內(nèi)存表示

注意新的位置0x7f5的y。即使將值x復(fù)制到y(tǒng),變量也會(huì)y在內(nèi)存中擁有一些新地址。因此,您可以覆蓋y不影響的值x:

y  =  2339 ;

現(xiàn)在內(nèi)存布局將如下所示:

怎么使用Python中變量

更新了Y(2339)的代表

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

Python中的名稱

Python沒有變量。它有名稱。是的,這是一個(gè)迂腐點(diǎn),你當(dāng)然可以隨意使用術(shù)語(yǔ)變量。重要的是要知道變量和名稱之間存在差異。

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

>>> x  =  2337

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

創(chuàng)建一個(gè) PyObject

將typecode設(shè)置為整數(shù) PyObject

將值設(shè)置2337為PyObject

創(chuàng)建一個(gè)名為 x

指向x新的PyObject

增加的引用計(jì)數(shù)PyObject被1

注意:這PyObject與Python不同object。它特定于CPython并表示所有Python對(duì)象的基本結(jié)構(gòu)。

PyObject被定義為C結(jié)構(gòu),所以,如果你想知道為什么你不能打電話typecode或refcount直接,其因?yàn)槟銢]有進(jìn)入結(jié)構(gòu)直接。方法調(diào)用sys.getrefcount()可以幫助獲得一些內(nèi)部。

在內(nèi)存中,它可能看起來(lái)像這樣:

怎么使用Python中變量

Python的內(nèi)存中表示(2337)

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

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

>>> x  =  2338

這里發(fā)生的事情與C等價(jià)物不同,但與Python中的原始綁定沒有太大區(qū)別。

這段代碼:

創(chuàng)建一個(gè)新的 PyObject

將typecode設(shè)置為整數(shù) PyObject

設(shè)置值2338的PyObject

點(diǎn)x新PyObject

將new的refcount增加PyObject1

將舊的refcount減少PyObject1

現(xiàn)在在內(nèi)存中,它看起來(lái)像這樣:

怎么使用Python中變量

Python名稱指向新對(duì)象(2338)

此圖有助于說明x指向?qū)ο蟮囊?,并且不像以前那樣擁有?nèi)存空間。它還顯示該x = 2338命令不是賦值,而是將名稱綁定x到引用。

此外,前一個(gè)對(duì)象(持有該2337值)現(xiàn)在位于內(nèi)存中,引用計(jì)數(shù)為0,并將被垃圾收集器清理。

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

>>> y  =  x

在內(nèi)存中,您將擁有一個(gè)新名稱,但不一定是新對(duì)象:

怎么使用Python中變量

X和Y名稱指向2338

現(xiàn)在,你可以看到一個(gè)新的Python對(duì)象沒有被創(chuàng)建,只是指向同一個(gè)對(duì)象的新名稱。此外,對(duì)象的refcount增加了一個(gè)。您可以檢查對(duì)象標(biāo)識(shí)是否相同,以確認(rèn)它們是否相同:

>>> y is x
True

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

例如,您可以執(zhí)行以下操作y:

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

添加調(diào)用后,將返回一個(gè)新的Python對(duì)象?,F(xiàn)在,內(nèi)存看起來(lái)像這樣:

怎么使用Python中變量

x name和y命名不同的對(duì)象

已創(chuàng)建新對(duì)象,y現(xiàn)在指向新對(duì)象。有趣的是,這是如果你已經(jīng)綁定到的最終狀態(tài)y,以2339直接:

>>> y  =  2339

上述語(yǔ)句導(dǎo)致與添加相同的結(jié)束內(nèi)存狀態(tài)?;仡櫼幌?,在Python中,您不需要分配變量。而是將名稱綁定到引用。

【Python中的對(duì)象】

關(guān)于怎么使用Python中變量就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

新聞名稱:怎么使用Python中變量-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.rwnh.cn/article6/doesig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、響應(yīng)式網(wǎng)站虛擬主機(jī)、自適應(yīng)網(wǎng)站、網(wǎng)站策劃、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
府谷县| 邵阳市| 海丰县| 平武县| 德安县| 衡东县| 土默特左旗| 富阳市| 衡东县| 盐池县| 柏乡县| 洪江市| 鲜城| 磴口县| 集贤县| 长治市| 年辖:市辖区| 木里| 紫阳县| 广河县| 大渡口区| 察雅县| 赣州市| 贵港市| 莱州市| 寿光市| 利川市| 福安市| 曲水县| 吴江市| 郯城县| 宜兴市| 玉林市| 禹州市| 兰溪市| 台东市| 开封县| 潞城市| 广安市| 达日县| 泾川县|