本篇文章為大家展示了Python中通常不應(yīng)該犯的7個(gè)錯(cuò)誤分別是哪些,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專(zhuān)家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷(xiāo),專(zhuān)業(yè)領(lǐng)域包括網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、電商網(wǎng)站制作開(kāi)發(fā)、小程序定制開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷(xiāo)的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶(hù)提供全方位的互聯(lián)網(wǎng)品牌整合方案!
介紹
Python是一門(mén)相對(duì)容易掌握的語(yǔ)言,但是由于假設(shè)了很多事情,因此犯錯(cuò)誤非常容易。 此外,這些錯(cuò)誤可能會(huì)在很長(zhǎng)一段時(shí)間內(nèi)被忽略。 在我其他前四個(gè)菜鳥(niǎo)Python錯(cuò)誤之前。
避免這些新手Python錯(cuò)誤
他們可能會(huì)工作,但可能會(huì)更好。
今天,我將分享更多在Python 3.8中容易犯的錯(cuò)誤。
№1:+ =
在許多情況下,我當(dāng)然會(huì)犯的一個(gè)錯(cuò)誤是獲取+ =操作數(shù)。 假設(shè)必須用兩個(gè)獨(dú)立的操作數(shù)來(lái)完成加法似乎太容易了,一個(gè)用于加法,另一個(gè)用于斷言。 幸運(yùn)的是,Python(以及許多其他編程語(yǔ)言)支持可以同時(shí)執(zhí)行數(shù)學(xué)運(yùn)算和斷言運(yùn)算的操作數(shù)。
代替:
x = x + 5
做:
x += 5
№2:位置自變量符號(hào)
在大多數(shù)現(xiàn)代腳本語(yǔ)言中,可以將兩種主要類(lèi)型的參數(shù)用作函數(shù)的參數(shù):
位置和關(guān)鍵詞。
在python 3.8發(fā)行之前,還沒(méi)有辦法表示位置參數(shù),這使得位置參數(shù)默認(rèn)值基本上是不可能的。 但是,由于更改是在Python 3.8中對(duì)此進(jìn)行了更新,因此我們可以使用。 您應(yīng)該使用它們,因?yàn)槲恢脜?shù)是具有出色性能的優(yōu)質(zhì)Python代碼的基礎(chǔ)。 如果您的代碼需要用Python補(bǔ)償?shù)囊患?,尤其是在機(jī)器學(xué)習(xí)時(shí),那可能就是性能。
關(guān)鍵字參數(shù)在函數(shù)定義時(shí)評(píng)估一次。 這可能特別不利于遞歸算法的性能。 而且,如果您要編寫(xiě)成本函數(shù),則絕對(duì)必須使用位置參數(shù)。 這并不是說(shuō)根本不應(yīng)該使用它們,但是,只要有可能,最好使用位置參數(shù)。
代替:
def numbers(custom, five=5,ten=10,fifteen=15): total = five + ten + fifteen + custom return(total)
做:
def numbers(custom,\,five=5,ten=10,fifteen=15): total = five + ten + fifteen + custom return(total)
同樣重要的是要記住,此功能是相當(dāng)新的,因此僅使用位置參數(shù)以提高性能的概念將僅限于Python 3.8+
№3:初始化返回
盡管這當(dāng)然并不常見(jiàn),并且可能是一個(gè)相當(dāng)大的菜鳥(niǎo)動(dòng)作,但我已經(jīng)看到人們嘗試在其初始化函數(shù)中執(zhí)行返回。 在Python的面向?qū)ο蟮氖澜缰校看螌?shí)例化類(lèi)時(shí)都會(huì)調(diào)用__init__函數(shù)。 初始化函數(shù)對(duì)于設(shè)置變量,移動(dòng)數(shù)據(jù)和構(gòu)造類(lèi)型而言非常有用。 功能強(qiáng)大,責(zé)任重大,Python的__init__函數(shù)應(yīng)用于類(lèi)初始化,而不是監(jiān)視,不循環(huán),不直接執(zhí)行,僅用于類(lèi)初始化。 并請(qǐng)(我有經(jīng)驗(yàn)的人正在這樣做!)
不要返回init!
(這沒(méi)有任何意義!)
№4:循環(huán)依賴(lài)
當(dāng)編寫(xiě)一個(gè)大型Python程序包時(shí),每個(gè)程序段都可以實(shí)現(xiàn)相似的目標(biāo),通常,您的程序包將彼此依賴(lài)。 這可能會(huì)帶來(lái)很大的問(wèn)題,并可能導(dǎo)致一些被稱(chēng)為"循環(huán)依賴(lài)項(xiàng)"的事情。 發(fā)生這種情況時(shí),當(dāng)模塊周?chē)牟煌恢脟L試相互訪問(wèn)時(shí),您可能會(huì)遇到問(wèn)題。
№5:空格還是縮進(jìn)?
如您所知,Python使用縮進(jìn)而不是定界符將代碼包含在其他代碼中。 對(duì)于許多人來(lái)說(shuō),這使代碼更易于閱讀和編寫(xiě),盡管主觀上我個(gè)人鄙視它。 但是,在其他語(yǔ)言中,我通常傾向于使用縮進(jìn)(Tab鍵)來(lái)縮進(jìn)代碼。但是,根據(jù)PEP8,應(yīng)該為縮進(jìn)使用四個(gè)空格。 老實(shí)說(shuō),這是我只有在與很多人一起進(jìn)行項(xiàng)目時(shí)才遵循的原則。 對(duì)我而言,只要保持一致,我就不會(huì)將空格或縮進(jìn)視為重要的事情,但從正式意義上講,您應(yīng)該使用空格。 話(huà)雖如此,在編寫(xiě)用于某項(xiàng)工作的實(shí)際代碼或需要許多其他用戶(hù)遵守的大型項(xiàng)目時(shí),遵循PEP8的標(biāo)準(zhǔn)可能是一個(gè)好主意。
№6:塊迭代
當(dāng)執(zhí)行迭代的for循環(huán)時(shí),編寫(xiě)全長(zhǎng)的for循環(huán)可以很容易地在代碼中表達(dá)您的想法。 但是,通常,如果您需要執(zhí)行的操作僅占用一行,則最好循環(huán)一行。 這不僅會(huì)使您的代碼更漂亮,更簡(jiǎn)潔,而且還可以提高性能。
代替:
for i in x: i += 5
做:
[i + 5 for i in x]
№7:實(shí)習(xí)弦
對(duì)于最后一個(gè)要考慮的錯(cuò)誤,我想談?wù)剬?shí)習(xí)琴弦。 在某些情況下,Python會(huì)嘗試重用不可變的對(duì)象,而字符串實(shí)習(xí)就是這種實(shí)際作用的一種情況。 所有長(zhǎng)度為1的字符串都被屏蔽。 字符串中除ASCII字符,數(shù)字和下劃線外沒(méi)有其他任何內(nèi)容。
在這里,我嘗試創(chuàng)建兩個(gè)不同的對(duì)象a和b,但這不是Python所做的。 Python實(shí)際上是b指向a的指針,而不是產(chǎn)生新的字符串。 但是,如果我們添加ASCII字符:
因此,在使用不可變字符串時(shí)請(qǐng)牢記這一點(diǎn),因?yàn)樗鼰o(wú)疑給我?guī)?lái)了很多麻煩。
上述內(nèi)容就是Python中通常不應(yīng)該犯的7個(gè)錯(cuò)誤分別是哪些,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。