十個(gè)Python初學(xué)者常犯的錯(cuò)誤
下面10個(gè)Python初學(xué)者常犯的錯(cuò)誤,并不是真正的代碼錯(cuò)誤,代碼照樣可以運(yùn)行,但是不夠Pythonic,因?yàn)镻ython有自己的語言哲學(xué),在代碼的處理上有傳統(tǒng)語言無法比擬的簡潔性和便捷性。

1. 真值比較
初學(xué)者經(jīng)常在if語句中使用==比較符來判斷表達(dá)式是否為真值。

這是一種冗余的寫法,其實(shí)你可以直接對變量進(jìn)行檢查。

2 . 字符串連接
很多初學(xué)者教程中,他們會(huì)告訴你字符串連接直接使用+操作符。

一種更優(yōu)雅的寫法是使用f-string方式,將變量放置在{} 中,該方法能讓代碼清晰易讀,因?yàn)槟悴恍枰槍Ψ亲址兞孔鰪?qiáng)制轉(zhuǎn)換了。

3. open()、close()與上下文管理器
操作文件時(shí),下面的代碼看起來可讀性很好,打開文件、編輯文件、關(guān)閉文件。不過在最后你總要是手動(dòng)去調(diào)用close方法來關(guān)閉文件。

其實(shí)python提供了內(nèi)置的上下文管理器,操作文件時(shí),使用with關(guān)鍵字操作文件,這樣就不需要自己處理文件的關(guān)閉操作了,在離開上下文前管理器會(huì)自動(dòng)幫你關(guān)閉文件。

4. 檢查列表是否為空
假設(shè)你要基于列表做某些操作,操作前需要判斷列表是否為空,初學(xué)者通常會(huì)使用len方法判斷列表的長度是否為0,并做后續(xù)操作。

有經(jīng)驗(yàn)的開發(fā)者會(huì)告訴你,一種更好的方式是直接用列表本身來判斷列表是否為空

5. 字典中獲取key和value
如果你要列出并打印字典中所有元素,首先你要拿到每個(gè)元素的key,然后通過key來獲取對應(yīng)的value。初學(xué)者通常將兩個(gè)步驟分開處理。

更便捷的方法是,字典的items()方法會(huì)返回一個(gè)由(key,value)元組構(gòu)成的迭代對象,

6. 解構(gòu)賦值
元組在python中是一種固定長度的數(shù)據(jù)結(jié)構(gòu),新手在將元組中的元素賦值給多個(gè)不同的變量時(shí),他們通常的做法是從元組中逐個(gè)賦值給變量

更好的做法是直接在一行代碼中用解構(gòu)的方式,將元組同時(shí)賦值給多個(gè)不同的變量。

7. 列表迭代
對于新手來說,用for循環(huán)迭代列表中的元素時(shí),他們通常的做法是先拿到列表的長度,然后通過元素的下標(biāo)索引來獲取值。

其實(shí)更專業(yè)的做法就是直接迭代列表本身,每次迭代出來的值就是列表中的元素

8. 一個(gè)索引用于多個(gè)列表
假設(shè)你想將兩個(gè)列表中的值做加操作,通常,你會(huì)從索引0開始循環(huán)直到列表的結(jié)尾,每次循環(huán)將列表項(xiàng)做加操作組成新的列表

python提供了一個(gè)更好的方法zip(),它將兩個(gè)列表對象重新組合成一個(gè)成對出現(xiàn)的tuple元素列表

9. 海象操作符
在python3.8之前,當(dāng)一個(gè)變量作用在if判斷語句上時(shí),要先給他賦值然后再處理

python3.8的海象操作符,讓你的代碼減少重復(fù),看起來更簡潔,你可以將變量的賦值和if判斷一行處理。

10. 不必要的索引
如果有一個(gè)文本列表,你想隨下標(biāo)索引一起打印,可以你單獨(dú)定義一個(gè)數(shù)字變量每次迭代的時(shí)候遞增1

一個(gè)更為專業(yè)的做法是直接用enumerate()方法,每次迭代時(shí),他會(huì)返回元素的下標(biāo)索引和元素本身




























