欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python中的代碼塊和非代碼塊是什么

今天就跟大家聊聊有關Python中的代碼塊和非代碼塊是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站建設與策劃設計,突泉網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設十多年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:突泉等地區(qū)。突泉做網(wǎng)站價格咨詢:18982081108

代碼塊的定義

Python程序是由代碼塊構造的。代碼塊是作為一個單元執(zhí)行的一段Python程序文本。

也就是說一個類,一個函數(shù),一個腳本文件都是一個代碼塊,此外,當你以交互式的方式輸入的時候,一行就是一個代碼塊。

Python中的代碼塊和非代碼塊是什么

這是在ipython解釋下以交互式方式輸入,那么這個時候每一行就是一個代碼塊。

如果是在類似pycharm環(huán)境運行,那么整個腳本文件都是一個代碼塊。前提是沒有函數(shù)或者類。

代碼塊的緩存機制

如果在同一個代碼塊內,會存在有一個緩存機制。

同一個代碼塊內,對對象進行初始化的時候,python解釋器會在內存中尋找這個初始化的值是不是已經存在,如果存在則會引用自同一個內存空間。也就是說我們用is進行判斷,應該返回的是True。也就是python解釋器從上到下進行解釋,遇到一個初始化的對象,就把這個對象,以一個類似字典的形式存在一個內存空間中。如果再遇到初始化語句,解釋器就在這個內存空間尋找是否有同值的對象,如果有,則引用,如果沒有,則重新開辟一個內存空間存放這個初始化的值。

這個機制適用的對象有:int,float,complex ,boolean,str,其中字符串要符合一定規(guī)則的,否則不會存在這個緩存機制。

下面來進行一些驗證:

a = 100000000000000000000532758932759.419375091750151513515
b = 100000000000000000000532758932759.419375091750151513515
print(a is b)  # True

Python中的代碼塊和非代碼塊是什么

c = '1478174%^%&$^&$&sfhoaihfoiaf'
d = '1478174%^%&$^&$&sfhoaihfoiaf'
print(c is d)  # True

Python中的代碼塊和非代碼塊是什么

其實不管你整數(shù)或者小數(shù)有多長,都符合這個緩存機制,都是指向同一個內存地址。但是字符串就不一樣了。

其實也算不上什么限制,看一下驗證:

s_1 = '#'*4000
s_2 = '#'*4000
print(len(s_1))
print(s_1 is s_2)  # True
a_1 = '#'*4097
b_1 = '#'*4097
print(len(a_1))
print(a_1 is b_1)  # False

Python中的代碼塊和非代碼塊是什么

在pycharm中測試大概字符串做乘法后長度不超過大約4097長度,那么還是符合這個機制的。

即便是中文也是符合這個的。

不管你是中文加符號加空格加數(shù)字加字母,只要長度不超過大約4097那么應該是符合這個機制的。都指向的是同一內存地址。

這樣做的優(yōu)點就是簡化了內存空間,提升效率,避免重復的去開辟相同的值的內存空間

非同一代碼塊的緩存機制

非同一代碼塊的緩存機制其實和代碼塊的緩存機制很像,只不過對緩存的數(shù)據(jù)做了一些限制,將符合規(guī)定的數(shù)據(jù)存到了一個數(shù)據(jù)池當中,也就是一塊內存空間中。

如果你初始化對象值在這個數(shù)據(jù)池中,那么直接引用就可以,不用再重新開辟一個內存空間存放這個值。這個數(shù)據(jù)池分為數(shù)字數(shù)據(jù)池和字符串數(shù)據(jù)池,數(shù)字數(shù)據(jù)池是事先已經創(chuàng)建好了的。

對于非同一代碼塊,符合機制的數(shù)據(jù)類型有 int,boolean,str

其中,整數(shù)只有(-5~256)

對于字符串,我看很多博客只寫了只有全是數(shù)字,字母,下劃線組成的字符串才符合這個機制,其實長度為1的字符串或者空字符串也是符合這個機制的。但是不能是中文。

下面進行一些驗證,這里用的是jupyter,是ipython解釋器的交互式命令工具,也就是說每一行就是一個代碼塊。

Python中的代碼塊和非代碼塊是什么

下面是字符串的驗證:

Python中的代碼塊和非代碼塊是什么

當字符串做乘法的時候,和同一代碼塊的機制很像,但是只能是只有數(shù)字下劃線和字母的字符串做乘法之后長度小于大約4097的長度才會駐留。

Python中的代碼塊和非代碼塊是什么

上面均采用jupyter為測試環(huán)境,每一行都是一個代碼塊。

如果是函數(shù)或者類和函數(shù)或類外部的非同一代碼塊。因為函數(shù)和類本身就是一個代碼塊。

強制駐留

也叫指定駐留,意思就是你可以制定一個字符串加入到字符串數(shù)據(jù)池中,后面的如果有對象初始化是這個值,則可以直接引用。

Python中的代碼塊和非代碼塊是什么

import sysa =sys.intern('&&^*^&*123')
b = sys.intern('&&^*^&*123')
print(a is b)  # True

非同一個代碼塊,’&&*&*123’不符合字符串數(shù)據(jù)池的緩存機制,但是可以用sys模塊的intern方法,強制駐留,強行加入到字符串數(shù)據(jù)池中。

看完上述內容,你們對Python中的代碼塊和非代碼塊有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)站題目:Python中的代碼塊和非代碼塊是什么
文章源于:http://aaarwkj.com/article0/gjgjoo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設、微信公眾號、網(wǎng)站策劃、域名注冊、App開發(fā)、品牌網(wǎng)站制作

廣告

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

網(wǎng)站托管運營
亚洲av激情码国产一区| 久久精品色一情一乱一伦| 中国日本欧美最黄大片| 欧洲亚洲国产一区二区| 黄色av链接在线观看| 亚洲av久久一区二区| 亚洲一区二区三区 码| 91免费在线观看国产精品| 精品啪在线观看国产熟女| 久久久精品免费福利视频| 新午夜福利片在线观看| 欧美日韩久久久久久精品| 亚洲精品熟女一区二区三区| 国产三级在线观看91| 久久香蕉精品国产亚洲av| 日本免费一区二区三区的电影啊| 亚洲欧美午夜不卡视频| 成年人午夜在线观看网址| 首页亚洲一区二区三区| 亚洲精品日韩国产3区| 精品亚洲韩国一区二区三区| 国产91黑丝视频在线观看| 成人欧美精品一区二区不卡| 欧美夫妻成人性生活视频| 免费av男人天堂亚洲天堂| 色悠悠粉嫩一区二区三区| 日韩欧美亚洲制服丝袜| 不卡的av中文字幕在线播放| 伦理在线视频免费观看视频| 国产三级黄色大片在线免费看 | 亚洲人成免费在线观看| 久久av少妇亚洲精品| 亚洲日本成人一区二区| 国精品午夜福利视频不卡| 国产黄色大片一级久久 | 亚洲激情一区在线观看| 国产不卡的视频在线观看| 国产白丝精品爽爽久久| 亭亭丁香激情五月涩久久| 日韩色欧美色国产精品| 国产亚洲欧美精品久久久久久|