六星源課堂:這6種讓Python程序變慢的壞習(xí)慣,趕緊停止!
眾所周知,Python是一門非常流行的開發(fā)語言,它語言簡(jiǎn)潔且容易學(xué)習(xí),一個(gè)功能可能就有多種實(shí)現(xiàn)方式,那你知道有哪些習(xí)慣會(huì)使Python程序的運(yùn)行速度變慢嗎?請(qǐng)看下文:

1、不要導(dǎo)入根模塊
在使用Python時(shí),我們無法避免的一件事就是導(dǎo)入模塊,無論是內(nèi)置模塊還是第三方模塊,有時(shí),我們可能只需要該模塊中的一個(gè)或幾個(gè)函數(shù)或?qū)ο?,在這種情況下,我們?cè)搰L試只導(dǎo)入我們需要的函數(shù)或?qū)ο?,而不是?dǎo)入根模塊。
2、避免使用點(diǎn)/點(diǎn)鏈
使用dot非常直觀,在Python中訪問對(duì)象的屬性或函數(shù),大多數(shù)時(shí)候沒問題,但如果我們可以避免使用點(diǎn)甚至鏈接點(diǎn),性能實(shí)際上會(huì)更好。
3、不要使用+連接字符串
字符串在Python中是不可變的,因此,當(dāng)我們使用+將多個(gè)字符串連接成一個(gè)長(zhǎng)字符串時(shí),每個(gè)子字符串都是單獨(dú)操作的。
對(duì)于每個(gè)子字符串,它需要請(qǐng)求一個(gè)內(nèi)存地址,然后將它與該內(nèi)存地址中的原始字符串連接起來,這成為一種開銷。
但當(dāng)我們使用join函數(shù)時(shí),該函數(shù)事先知道所有子字符串,且內(nèi)存地址分配的長(zhǎng)度適合最終連接的字符串,因此沒有為每個(gè)子串分配內(nèi)存的開銷。
4、 不要使用臨時(shí)變量進(jìn)行價(jià)值交換
許多算法需要兩個(gè)變量的值交換,在大多數(shù)其他編程語言中,這通常是通過引入一個(gè)臨時(shí)變量來完成的。
但是在Python中,我們不必使用temp變量,Python具有內(nèi)置語法來實(shí)現(xiàn)此值交換。
5、使用if-condition短路
“短路”評(píng)估存在于許多編程語言中,Python亦是如此,基本上,它指的是某些布爾運(yùn)算符的行為,其中僅當(dāng)?shù)谝粋€(gè)參數(shù)不足以確定整個(gè)表達(dá)式的值時(shí)才執(zhí)行或評(píng)估第二個(gè)參數(shù)。
6、如果可以使用for循環(huán)就不要使用while循環(huán)
Python使用了很多C來提高性能,即CPython,在循環(huán)語句方面,Python中的For-Loop具有相對(duì)較少的步驟,其中更多的步驟作為C代碼運(yùn)行,而不是While-Loop。
因此,當(dāng)我們可以在Python中使用For-Loop時(shí),我們不應(yīng)該使用while循環(huán),這不僅是因?yàn)镕or-Loop在Python中更優(yōu)雅,而且性能更好。
以上就是本次分享的全部?jī)?nèi)容,想學(xué)習(xí)更多Python技巧,歡迎持續(xù)關(guān)注六星源課堂!