日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Python這些冷門特性,當(dāng)初也沒教啊

來(lái)源: 責(zé)編: 時(shí)間:2023-11-07 09:14:39 327觀看
導(dǎo)讀本期整理了Python中幾個(gè)冷門甚至奇特但又一直存在的特性,一起看看吧!for-elseif-else想必所有人都知道用來(lái)處理?xiàng)l件判斷,但Python中還有個(gè)for-else:names = ["James", "Tim", "Peter"]for name in names: if name == "

本期整理了Python中幾個(gè)冷門甚至奇特但又一直存在的特性,一起看看吧!zOA28資訊網(wǎng)——每日最新資訊28at.com

zOA28資訊網(wǎng)——每日最新資訊28at.com

for-else

if-else想必所有人都知道用來(lái)處理?xiàng)l件判斷,但Python中還有個(gè)for-else:zOA28資訊網(wǎng)——每日最新資訊28at.com

names = ["James", "Tim", "Peter"]for name in names:    if name == "Steve":        print("Steve in the list!")        breakelse:    print("Not found Peter!")# Not found Peter!

如該例,當(dāng)break沒有發(fā)生在for循環(huán)中時(shí),將執(zhí)行else代碼塊,為了驗(yàn)證,我們稍做改動(dòng):zOA28資訊網(wǎng)——每日最新資訊28at.com

names = ["James", "Tim", "Peter", "Steve"]for name in names:    if name == "Steve":        print("Steve in the list!")        breakelse:    print("Not found Peter!")# Steve in the list!

在該例中,由于觸發(fā)了break,else代碼塊未被執(zhí)行。zOA28資訊網(wǎng)——每日最新資訊28at.com

256、257

如果在Python中比較數(shù)字,有時(shí)可能會(huì)得到意想不到的結(jié)果,如:zOA28資訊網(wǎng)——每日最新資訊28at.com

>>> a=256>>> b=256>>> a is bTrue>>> x=257>>> y=257>>> x is yFalse

這是因?yàn)镻ython 會(huì)預(yù)加載[-5, 256]范圍內(nèi)的所有整數(shù),以節(jié)省時(shí)間和內(nèi)存成本,因此,當(dāng)聲明此范圍內(nèi)的整數(shù)時(shí),Python 僅引用緩存的整數(shù),而不會(huì)創(chuàng)建任何新對(duì)象,即該例中a和b是同一個(gè)對(duì)象,而x和y卻不是。zOA28資訊網(wǎng)——每日最新資訊28at.com

為驗(yàn)證這點(diǎn),可以打印每個(gè)變量的id:zOA28資訊網(wǎng)——每日最新資訊28at.com

>>> id(a)1696073345424>>> id(b)1696073345424>>> id(x)1696122928496>>> id(y)1696122928752

這種情況在Python中稱為integer caching。zOA28資訊網(wǎng)——每日最新資訊28at.com

String caching

和前述integer caching,Python中也會(huì)對(duì)small-size strings進(jìn)行緩存,如該例:zOA28資訊網(wǎng)——每日最新資訊28at.com

>>> a = 'Zhou'>>> b = 'Zhou'>>> a is bTrue>>> c = 'Cai Xukong'>>> d = 'Cai Xukong'>>> c is dFalse

就Python3.7來(lái)看,使用AST優(yōu)化器最多可以緩存4096字符,但任何包含空格的字符串都不會(huì)緩存:zOA28資訊網(wǎng)——每日最新資訊28at.com

>>> a = 'qyuqhsjkdbzksjgbvhjzsdbkjsfhlweakjfhiufgh'>>> b = 'qyuqhsjkdbzksjgbvhjzsdbkjsfhlweakjfhiufgh'>>> a is bTrue>>>

修改元組

在Python中元組是不可變對(duì)象,但考慮以下情況:zOA28資訊網(wǎng)——每日最新資訊28at.com

tp = ([1, 2, 3], 4, 5)tp[0].append(4)print(tp)# ([1, 2, 3, 4], 4, 5)

這是因?yàn)榍短譖ython對(duì)象的可變性取決于嵌套對(duì)象本身,雖然tp是不可變?cè)M,但tp[0]是可變列表(類似的,還需注意嵌套類型的深淺拷貝問題)。zOA28資訊網(wǎng)——每日最新資訊28at.com

0.1+0.2 == 0.3?

正常人都清楚0.1+0.2的結(jié)果為0.3,但Python中:zOA28資訊網(wǎng)——每日最新資訊28at.com

print(0.1+0.2 == 0.3)# False

那么為什么會(huì)這樣?我們打印出結(jié)果:zOA28資訊網(wǎng)——每日最新資訊28at.com

>>> 0.1 + 0.20.30000000000000004

準(zhǔn)確的說這是由于計(jì)算機(jī)只能以一定的精度存儲(chǔ)和處理浮點(diǎn)數(shù)。因此,浮點(diǎn)運(yùn)算依賴于機(jī)器處理器中的硬件實(shí)現(xiàn),并且沒有任何編程語(yǔ)言可以說其浮點(diǎn)計(jì)算總是正確的:zOA28資訊網(wǎng)——每日最新資訊28at.com

>>> 0.42 + 0.40.8200000000000001

+=比=快

在Python中連接字符串,使用+=和+運(yùn)算符雖然都可以達(dá)到目的,但代價(jià)不同,如:zOA28資訊網(wǎng)——每日最新資訊28at.com

>>> import timeit>>> print(timeit.timeit("s1 = s1 + s2 + s3", setup="s1 = ' ' * 100000; s2 = ' ' * 100000; s3 = ' ' * 100000", number=100))0.45820390002336353>>> print(timeit.timeit("s1 += s2 + s3", setup="s1 = ' ' * 100000; s2 = ' ' * 100000; s3 = ' ' * 100000", number=100))0.20369120000395924

為啥會(huì)這樣,這是由于+=不會(huì)創(chuàng)建新對(duì)象,這樣時(shí)間不就摳出來(lái)了,別小瞧這點(diǎn)時(shí)間,在字符串處理密集且繁雜的任務(wù)中這是不小的提升。zOA28資訊網(wǎng)——每日最新資訊28at.com

…代替pass

大多數(shù)人可能還在使用pass來(lái)代表占位符:zOA28資訊網(wǎng)——每日最新資訊28at.com

def my_func():   pass

但其實(shí)三個(gè)...也有相同功效(我自己在搭代碼框架時(shí)也習(xí)慣用這種方式)::zOA28資訊網(wǎng)——每日最新資訊28at.com

def my_func():   ...

以上就是本期的全部?jī)?nèi)容,期待點(diǎn)贊在看,我是啥都生,下次再見。zOA28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-17407-0.htmlPython這些冷門特性,當(dāng)初也沒教啊

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 深入理解gorm是如何和數(shù)據(jù)庫(kù)建立連接的

下一篇: 使用 Python 在視頻上渲染文本

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 大石桥市| 松阳县| 龙岩市| 汤阴县| 平罗县| 灵寿县| 新和县| 仁怀市| 安顺市| 安平县| 祥云县| 安丘市| 南投县| 沂水县| 文化| 珲春市| 特克斯县| 乐安县| 金乡县| 勐海县| 马边| 天峻县| 武川县| 荔浦县| 洛川县| 塔城市| 白银市| 东丽区| 基隆市| 日土县| 兴业县| 孙吴县| 房山区| 隆子县| 筠连县| 德惠市| 百色市| 青海省| 佛山市| 石景山区| 新建县|