Python真的簡單嗎?
????????最開始接觸Python是2018年的一個物理實驗競賽,當時選擇了Python這門語言,有兩個原因:簡單和調包。學習Python都會想起一句話“人生苦短,我用Python”,第一次聽到這句話還是蠻搞笑的(本科非計院,學習Python之前,有點C和C++的基礎)。初學這門語言,看了網(wǎng)上也寫程序,發(fā)現(xiàn)Python簡簡單單,就這?但是上手第一天就遇見了難題,初學Python使用的是Python官網(wǎng)的解釋器(應該叫這個吧?),安裝后發(fā)現(xiàn)無法使用,遇見困難就度娘,發(fā)現(xiàn)Python安裝后還需要配置環(huán)境,但是就很懵逼,還有這個?以前使用VS和codeblock都是下載完軟件就可以使用的,雖然配置環(huán)境不難,百度一下很多結果,跟著教程迷迷糊糊就結束了環(huán)境的配置,然后就可以使用Python寫代碼了,第一個代碼肯定是Hello World了,當時看見輸出,心里賊開心,馬上要開始自己的Python之旅了。
????????然后就開始學習Python,當時沒學習什么語法,因為我的目的就是解決競賽的一個問題,實現(xiàn)數(shù)據(jù)擬合和可視化輸出。可視化肯定要設計一個界面,經(jīng)過多方了解,選擇了Tkinter這個庫,看了B站的莫煩視頻,跟著視頻做了例子,對界面編程有了大概的了解,當時我一直吐槽Python,界面設計為什么沒有像VS的MFC工程,可以直接拖拽鍵控來進行界面編程,什么鬼的人生苦短,而且界面出來太丑了。花了兩天時間從熟悉Python到編寫一個可視化軟件,在這個過程另外一個最頭疼的問題是調包,當時趕時間沒有從基礎學習Python,在調包過程中發(fā)現(xiàn)各種bug,數(shù)據(jù)類型不匹配什么的等等,而且還不熟悉個個函數(shù)的功能(文檔都是英文,看不懂,哈哈哈),雖然最終實現(xiàn)了目的,但是我從來沒有去了解Python。結束了項目,我就沒有再接觸Python,因為我覺得這門語言并沒有那么好,不值得我花時間去學習。
????????第二次接觸Python是2020年的本科畢業(yè)設計,當時我的需要對數(shù)據(jù)進行處理、分析、并通過數(shù)據(jù)的潛在信息來進行缺陷判斷,涉及了機器學習和深度學習領域,但是我對這個領域就是一個小白,但是我知道當時這個領域很熱門。后來通過知乎、CSDN等了解了這個領域,因為是畢業(yè)設計,人生就一次,我就打算從基礎理論走起,找到了周志華的西瓜書和GoodFollow的花書,這兩本書是這個領域的代表作,在這個領域使用的最多的語言就是Python。但是Python在我心里就是難用的代表,我就很納悶,為啥都用這個,困惑促使我去認真了解這門語言,也是這個機會,讓我真真邂逅了Python,發(fā)現(xiàn)了這個語言的“美”。
????????由于是窮苦學生,當時找的是網(wǎng)上的各種資料去學習,發(fā)現(xiàn)Python和C++差不多,無非就是數(shù)據(jù)類型、if判斷、循環(huán)、函數(shù)這些的,然后嘗試寫了一些代碼,很容易上手。當時想這就會了Python?Python就這???然后嘗試了一些別的代碼,也成功實現(xiàn)了我的目的。此時,我覺得我已經(jīng)掌握了Python,覺得Python很簡單。但是當我看了另外一本書《流暢的Pyhon》時,我發(fā)現(xiàn)我錯了,Python真的不簡單。這本書不是主要講解Python的語法,而且作者通過自己的親生經(jīng)歷探討了Python這門語言,也是這本書改變了我對Python的看法。此時我發(fā)現(xiàn)Python沒有我想的那么簡單。據(jù)兩個問題:
????????????????1.?函數(shù)參數(shù)默認為可變時,調用后這個默認參數(shù)會發(fā)生什么變化?
????????????????2. 閉包時,變量的作用域是什么?
????????????????3. list類型變量在=賦值后id是否一樣?
????????在學習Python的時候,你考慮過這些問題了嗎?肯定很多人都會忽視這些問題,雖然你現(xiàn)在不會發(fā)現(xiàn)這些問題,但是隨著你的使用,你肯定會接觸這些,會造成很多的bug。我覺得我掌握Python,但是實際上我只是會Python,根本談不上掌握,只是初窺門徑。
????????最后談談我對Python的看法,從容易和調包俠兩個角度來談談我的看法,不喜勿噴,可以評論區(qū)共同探討。第一點:簡單?,F(xiàn)在網(wǎng)上都有“小白一周掌握Python”的教程,讓很多人都覺得Python簡單。是的,Python上手真的很容易,即使小白也可以在幾天內入門,但是僅僅是入門罷了,但是你真的掌握了Python嗎?可能你一周的學習會發(fā)現(xiàn)自己能夠實現(xiàn)簡單的代碼實現(xiàn)了你的目的,但是這并不代表你會了,因為隨著你的使用,你會發(fā)現(xiàn)你將要遇到很多bug,但是你的代碼在你的認知里邊并沒有問題,所以你會去搜索、學習。這時你會發(fā)現(xiàn)你對Python的理解更深,發(fā)現(xiàn)自己學習的并不完整,只是學習無法讓自己掌握一門語言,而是去使用這門語言,隨著你遇到的bug增多,你去解決這個bug,你就會發(fā)現(xiàn)自己沒有學到的新知識,發(fā)現(xiàn)Python沒有想的那么簡單。如果你遇到bug只是去搜一個解決方案,而沒有去想為什么出現(xiàn)這個bug,就當我沒說,哈哈哈。第二點:調包。很多人說Python就是調包俠。調包這點我不否認,我就是一個調包俠,因為在寫Python的過程中,我大部分都是調用別人寫庫(pandas、numpy、scipy、sklern等待),但是我覺得調包也沒有錯,一個人的精力是有限的,不可能什么都做,我可能為實現(xiàn)構造一個數(shù)組,就去編寫一個數(shù)組類,那我一年可能都寫不完一個項目,調包就是為了不重復造輪子,將自己的時間用在真正有意義的事情上,例如我實現(xiàn)音頻數(shù)據(jù)分析,我的主要任務是去實現(xiàn)數(shù)據(jù)分析,而不是去實現(xiàn)怎么去讀取音頻數(shù)據(jù),這樣就是浪費時間。關鍵是如何看待調包這個問題,使用語言的目的是解決一個問題,而不是重復前人做的事情,有前人寫好的為什么不可以直接使用那?這樣不是可以大大提高效率。而且在實際項目中,你不可能全是調包,肯定有自己的想法,自己的優(yōu)化算法,通過公式寫出自己的代碼,對我而言,一個好的程序不是掉不調包,而是如何體現(xiàn)自己的思想,將自己的思想融入到代碼中。
????????到這里就差不多了,最后給大家分享一些書,幫大家避避坑。
????????????????1. 廖雪峰的Python程序入門,可以快速Python入門。
????????????????2. 《流暢的Python》,這本書不適合一開始就開,這個更傾向于講解工程師的經(jīng)驗,讓你更深入了解Python。
最后希望大家能夠點個贊!
微信公眾號:DeepThinkerr
CSDN:DeepThinkerr