Python簡潔美 -- 1披泪、Python式思維(二)

有時候,為了節(jié)省幾行代碼或者想讓你的同事對你刮目相看搬瑰,你會編寫一些更“精巧”的代碼款票,但是,編寫這種代碼是要付出代價的:犧牲了代碼可讀性和簡單性泽论。下面來看一個例子艾少,代碼1-9,對字典序列進行排序:

代碼1-9 對字段序列進行排序

這段代碼有什么問題翼悴?

當然缚够,在一行代碼中,利用lambda表達式按照first_name對字典進行排序抄瓦,可以讓代碼看起來比使用for循環(huán)更加精巧潮瓶,并沒有什么問題。

但是钙姊,咋一看這段代碼毯辅,會發(fā)現(xiàn)并沒那么容易理解,尤其是對新手來說更是如此煞额,因為lambda表達式怪異的語法思恐,并沒有那么容易掌握沾谜。當然,在這里使用lambda表達式的確節(jié)省了一些代碼量胀莹,看起來貌似精巧基跑,但是,這種做法并沒有讓代碼的易讀性和容錯性更強描焰。比如媳否,這段代碼忽視了鍵值缺失的場景,同時也沒有考慮字典正確是否荆秦。

下面用函數(shù)來改寫一下這段代碼篱竭,讓其更易讀,容錯性更強步绸。函數(shù)會檢查非預期值掺逼,編寫起來也更加容易,如代碼1-10所示:

代碼1-10 通過函數(shù)對字典序列進行排序

你可以看到瓤介,這段代碼檢查了所有可能的非預期值吕喘,且比之前的單行代碼更易讀。單行代碼雖然節(jié)省了代碼量刑桑,但給代碼帶來了一定的復雜度氯质。需要說明的是,并不是說單行代碼就一定不好漾月,在這里我要闡明的觀點是病梢,如果單行代碼讓你的代碼更難閱讀,請盡量避免使用梁肿。

所以,在編寫代碼的時候需要意識到這點觅彰,單行代碼有時會讓你的代碼更易讀吩蔑,有時候恰恰相反。

讓我們來看另外一個例子填抬,在這個例子中烛芬,會讀取一個CSV文件,并對所處理的行數(shù)進行計數(shù)飒责,代碼1-11所示說明了為什么代碼的可讀性如此重要赘娄,同時也說明了為什么命名在代碼可讀性中會起到重要的作用。

將代碼分割成幫助函數(shù)(helper function)可讓復雜代碼更容易閱讀宏蛉,而且在代碼碰到錯誤時更容易調(diào)試遣臼。

代碼1-11 讀取CSV文件

這段代碼在with語句中完成多個功能,為了讓代碼易讀性更強拾并,需要將從CSV文件中處理薪水的代碼放到另外一個函數(shù)里讓代碼產(chǎn)生更不易產(chǎn)生錯誤揍堰。另外鹏浅,調(diào)試這種多行代碼也會非常困難,所以在定義函數(shù)的時候屏歹,需要有明確的目標和界限隐砸。下面,將這些代碼進一步進行分割蝙眶,如代碼1-12所示:

代碼1-12 讀取CSV文件季希,代碼易讀性更強

我們在這里創(chuàng)建了個幫助函數(shù),而不是在with語句里完成所有的功能幽纷,這種做法可以讓開發(fā)人員更清晰地了解process_salary函數(shù)的功能式塌。如果你要處理更多的場景,或者從CSV文件里讀取更多的數(shù)據(jù)霹崎,可以按照上述簡單原則將函數(shù)進一步進行分割珊搀。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市尾菇,隨后出現(xiàn)的幾起案子境析,更是在濱河造成了極大的恐慌,老刑警劉巖派诬,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劳淆,死亡現(xiàn)場離奇詭異,居然都是意外死亡默赂,警方通過查閱死者的電腦和手機沛鸵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缆八,“玉大人曲掰,你說我怎么就攤上這事∧纬剑” “怎么了栏妖?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長奖恰。 經(jīng)常有香客問我吊趾,道長,這世上最難降的妖魔是什么瑟啃? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任论泛,我火速辦了婚禮,結果婚禮上蛹屿,老公的妹妹穿的比我還像新娘屁奏。我一直安慰自己,他們只是感情好蜡峰,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布了袁。 她就那樣靜靜地躺著朗恳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪载绿。 梳的紋絲不亂的頭發(fā)上粥诫,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音崭庸,去河邊找鬼怀浆。 笑死,一個胖子當著我的面吹牛怕享,可吹牛的內(nèi)容都是我干的执赡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼函筋,長吁一口氣:“原來是場噩夢啊……” “哼沙合!你這毒婦竟也來了?” 一聲冷哼從身側響起跌帐,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤首懈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谨敛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體究履,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年脸狸,在試婚紗的時候發(fā)現(xiàn)自己被綠了最仑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡炊甲,死狀恐怖泥彤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卿啡,我是刑警寧澤全景,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站牵囤,受9級特大地震影響,放射性物質發(fā)生泄漏滞伟。R本人自食惡果不足惜揭鳞,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梆奈。 院中可真熱鬧野崇,春花似錦、人聲如沸亩钟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扶镀,卻和暖如春蕴侣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背臭觉。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工昆雀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝠筑。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓狞膘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親什乙。 傳聞我的和親對象是個殘疾皇子挽封,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354