如何寫出更穩(wěn)定的Python 代碼?
Python 這門語言太簡單了,簡單到隨便一個人,學(xué)了半小時就能寫出代碼,寫了幾個月代碼就敢在簡歷上寫自己熟練掌握 Python。或者有人以為 Python 等于 pandas,Python 等于 AI。
目前市面上,講 Python 入門的課程很多、講基于 Python 實現(xiàn)的 AI、數(shù)據(jù)分析、后端的課程也很多。但講 Python 進(jìn)階的課程不多,講如何避免 Python 坑點的也不多。
但是,如果大家看一下很多人寫的 Python 代碼,就會發(fā)現(xiàn),一是代碼丑。二是亂用各種特性和語法糖,不知道從哪里學(xué)來幾個高級用法,就到處亂用炫技
很多人寫出的代碼,僅僅是一個能夠工作,“當(dāng)前”能產(chǎn)生正確結(jié)果的代碼。這個代碼毫無優(yōu)化可言,速度慢,不穩(wěn)定,不知道未來哪天突然就不能用了。
有很多人吐槽 Python 速度慢,有全局解釋器鎖限制了代碼的性能,或者 Python 是動態(tài)語言,變量可以隨便賦值導(dǎo)致項目難以維護(hù)。。。
但實際上,我想說,寫出能夠工作的 Python 代碼,這很容易,但是把 Python 用對又是另一回事。很多人把 Python 的特性當(dāng)做 Bug,把自己的無知當(dāng)做語言的缺陷。很多人濫用 Python 的特性,然后怪Python 本身太靈活難以維護(hù)。
常見的問題
我們來看幾個例子。我剛剛加入網(wǎng)易的時候,當(dāng)時有一個做數(shù)據(jù)倉庫的高級工程師,給他帶的實習(xí)生說,Python 有全局解釋器鎖,所以它的多線程實際上是單線程,不需要考慮并發(fā)沖突。這種說法是對全局解釋器鎖的一種徹底誤解,這樣說的人,根本不知道全局解釋器鎖作用在哪里。
還有人代碼里面大量的 try … except,一層套一層。這樣一來,它的代碼運行以后絕對不會報錯。看起來非常穩(wěn)定。但是經(jīng)常運行一段時間,輸出的結(jié)果就跟預(yù)期相差甚遠(yuǎn)。而且根本不知道哪里出了問題。
有的同學(xué)電腦里面第一個 Python 是使用 Anaconda 安裝的。后來因為其他原因要安裝另外的 Python 環(huán)境。導(dǎo)致原來的環(huán)境不能正常使用。打開 PyCharm 后,發(fā)現(xiàn)全是紅色波浪線。使用 pip 安裝一個第三方庫,明明已經(jīng)安裝成功了,在命令行交互環(huán)境已經(jīng)可以正常導(dǎo)入了,但是在 PyCharm 里面一運行就報錯,提示缺少這個第三方庫。
還有的同學(xué),不知道做了什么操作,導(dǎo)致 Python 自帶的模塊無法正常導(dǎo)入,或者導(dǎo)入以后,缺少了對應(yīng)的功能,一運行就報錯。