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

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://www.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)站托管運營
99精品国产高清一区二区三区| 日韩性生活视频免费播放| 欧美中日韩一区二区三区 | 中文字幕人妻丝袜一区一三区 | 亚洲熟女av一区少妇| 成人爱爱视频在线免费观看| 人成在线免费视频网站| 免费女性啪啪无遮挡网站| 亚洲精品一区二区三区网站| 午夜精品久久久免费视频| 久热99在线视频免费观看| 老司机看片午夜久久福利| 亚洲国产精品性色av| 在线视频天堂亚洲天堂| 海外成人永久免费视频| 人妻中文字幕一区二区三| 日韩国产推荐一区二区| 日韩欧美国产精品自拍| 久激情内射婷内射蜜桃| 国产亚洲精品第一综合| 亚洲一区二区三区av电影| 在线观看亚洲激情av| 日本伦理三级在线观看| av国语对白在线观看| 日本美女午夜福利视频| 国产女主播在线观看视频| 免费观看黄片视频在线播放| 久久精品国产亚洲av麻豆网站| 桃色av一区二区三区| 91精品国产自产永久在线| 日产一区二区三区网站| 日韩中文字幕亚洲精品一| 中文字幕乱码亚洲影视| 欧美精品久久久久九九九| 一区二区三区国产不卡| 国产亚洲精品一区在线| 高清亚洲一区二区三区| 好吊妞在线新免费视频| 欧美视频亚洲视频自拍视频| 日本在线人妻中文字幕| 国产精品国产三级国av中文|