abstrak:你們所說的什么要怎樣數(shù)據(jù)分析、爬蟲、Web 等,在我看來那不是精通 Python,而是精通某一領(lǐng)域,拋開 Python 換用另一門語言也可,在我看來,精通 Python 語言大約需要如下這些步驟(個(gè)人愚見,不服你奈我何~~~):------------------------level 1:了解基本語法這是最容易的一級(jí),掌握了 Python 的基本語法,可以通過 Python 代碼實(shí)現(xiàn)常用的需求,
你們所說的什么要怎樣數(shù)據(jù)分析、爬蟲、Web 等,在我看來那不是精通 Python,而是精通某一領(lǐng)域,拋開 Python 換用另一門語言也可,在我看來,精通 Python 語言大約需要如下這些步驟(個(gè)人愚見,不服你奈我何~~~):
------------------------
level 1:了解基本語法
這是最容易的一級(jí),掌握了 Python 的基本語法,可以通過 Python 代碼實(shí)現(xiàn)常用的需求,不管代碼質(zhì)量怎么樣。這部分內(nèi)容,可以參考:The Python Tutorial。
------------------------
level 2:熟練使用常用的庫
熟悉常用 standard library 的使用,包括但不限于 copy / json / itertools / collections / hashlib / os / sys 等,這部分內(nèi)容,可以參考:The Python Standard Library。
熟悉常用的第三方庫,這就根據(jù)每個(gè)人不同的用法而有所不同了,但是一定要掌握你所常用的那個(gè)領(lǐng)域里的第三方庫。
------------------------
level 3:Pythonic
這一級(jí)別比上一級(jí)別稍難,但是還是可以輕松達(dá)到。所謂 Pythonic,就是相比其它語言,Python 可以通過更加優(yōu)雅的實(shí)現(xiàn)方式(不管是語法糖還是什么),比如(包括但不限于) with、for-else、try-else、yield 等。
另外你還需要掌握這些所謂魔法的實(shí)現(xiàn)原理,了解 Python 在語法層面的一些協(xié)議,可以自己實(shí)現(xiàn)語法糖。如 with 的實(shí)現(xiàn)方式(上下文管理器)等。
達(dá)到這一級(jí),你的代碼可以看起來很漂亮了。這部分內(nèi)容,可以參考:
The Python Language Reference
Python HOWTOs
------------------------
level 4:高級(jí)玩法
掌握 Python 的內(nèi)存機(jī)制、GIL 限制等,知道如何改變 Python 的行為,可以輕松寫出高效的優(yōu)質(zhì)的 Python 代碼,能夠輕松分辨不同 Python 代碼的效率并知道如何優(yōu)化。
------------------------
level 5:看透本質(zhì)
閱讀 Python 的 C 實(shí)現(xiàn),掌握 Python 中各種對(duì)象的本質(zhì),掌握是如何通過 C 實(shí)現(xiàn)面向?qū)ο蟮男袨?,?duì)于常見的數(shù)據(jù)結(jié)構(gòu),掌握其實(shí)現(xiàn)細(xì)節(jié)。到這一步,需要將 Python 源碼學(xué)習(xí)至少一遍,并對(duì)關(guān)鍵部分有較深層次的理解。
------------------------
level 6:手到拈來,一切皆空
不可說,不必說~
首先,以上步驟并不是打怪升級(jí),不存在到了一級(jí)再去第下一級(jí),你完全可以在熟練標(biāo)準(zhǔn)庫的過程中掌握語言的實(shí)現(xiàn)原理等,這并不矛盾。所以那些評(píng)論說「我已經(jīng) xx 級(jí)了, xx 時(shí)候要到 xx 級(jí)」的朋友們,希望不要誤解了我的意思,你不必將自己限制死,而可以很靈活的變通。
另外題干中的「招聘要求寫著“精通 Python 語言”」,對(duì)于這樣的招聘要求,絕大多數(shù)其實(shí)是 HR 腦殘(不排除少部分公司真的有特殊需求),一般面對(duì)這樣的公司我會(huì)選擇繞道而行。既然是找工作,還是要找自己滿意且公司本身很不錯(cuò)的,人生苦短,何必跟自己過不去呢?說到這里,我看知乎的招聘崗位中(知乎招聘),貌似沒有出現(xiàn)「精通」二字,自認(rèn)技術(shù)高超的小伙伴可以去試試看喲~~~
最后,希望各位不要被某些答案「不需要精通 xx 語言」這樣的言論干擾,編程語言有很多相似的地方,個(gè)人覺得掌握一門語言的底層實(shí)現(xiàn),對(duì)自身的編程水平提升是很有幫助的。但是要搞清楚,僅僅編程語言是不夠的,如何使用一門編程語言做有趣的事情,這很重要。