怎么样才算是精通 Python?
生活随笔
收集整理的這篇文章主要介紹了
怎么样才算是精通 Python?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Yifeng Liu?,生死去來,棚頭傀儡,一線斷時,落落磊磊 33?人贊同 有幸上過Raymond Hettinger的課
引用下Raymond的大概標準
1.了解主要數據結構, 底層實現,和常用相關優化法.
2.了解class和object在python里怎么實現的(相關metaclass的知識)
3. 熟悉相關庫
4. 了解cpython和pypy
5. 一顆謙虛, 謹慎而且好學的心 發布于 2013-07-04?1 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 215贊同 反對,不會顯示你的姓名 羅伊?,后端工程師 215?人贊同 更新:
之前在組里分享過,后端那些事,有興趣可以看看。
要想精通python,寫的代碼首先得pythonic,自己閉門造車肯定不行,肯定需要研讀牛B的開源代碼,在這過程中會遇到python的許多高階用法
1.裝飾器 裝飾器在框架中運用的很多,比如flask_login,要精通至少很隨意的寫出滿足需求的裝飾器,用裝飾器肯定需要functools模塊的支持
2.生成器 說道生成器就自然地聯系到各種推導式(列表,元祖,字段,集合),那肯定也要提到itertools模塊,contextlib標準庫中是個典范,說到contextlib就需要提到with協議,迭代器協議,以及標準庫中的哪些實現了它們,如文件描述符,線程鎖,繼續延伸的話需要了解greenlet提供的協程,那就不得不提gevent,eventlet
3.描述符 這你就得知道所有的函數其實都是描述符,property,classmethod,staticmethod都是通過描述符實現的,那就得提到werkzeug和bottle都提供的cached_property,都是訪問屬性的就得提到
__getattr__和__getattribute__,知道在合適的時候定義合適的方法簡化流程
4.元類 其實這玩意用處很大,如sqlalchemy,django的orm中field的定義都用到了它,那你得知道當python解析py時,發現__metaclass__的時候就會調用元類的__new__和__init__,如果你理解元類的__new__和__init__的第一個參數都是類(而不是self)那元類就差不多了
5.多線程 雖說python由于gil的限制不能利用多核,但在處理io密集型的任務還是有很大好處的,
那得知道threading.RLock是線程可重入鎖,daemon thread的用處(python執行環境會等待所有非daemon thread的結束),Queue是線程安全的鎖,logging是線程安全的日志模塊,還有線程池也要熟悉
6.其它 如python2,6/7包含了不少新特性,如abc模塊的抽象方法機制,collections提供的有用容器,python中的編碼問題,super為啥需要兩個參數,而3不需要參數,經典的閉包問題,NotImplemented和NotImplementedError的區別,多繼承的mro問題,相對導入原理(__name__,如果看最新開源代碼,基本都是相對導入)......
其實還有很多,但更多的是和業務相關,比如正則表達式,那至少得知道貪婪,非貪婪,命名組等。搞服務器開發,socket,twisted,gevent肯定要精通。搞web開發,django,flask,tornado得熟悉。。。。 編輯于 2016-05-26?12 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 425贊同 反對,不會顯示你的姓名 xlzd?,個人博客:http://xlzd.me,技術宅~ 渠志倍?等?425?人贊同 你們所說的什么要怎樣數據分析、爬蟲、Web 等,在我看來那不是精通 Python,而是精通某一領域,拋開 Python 換用另一門語言也可,在我看來,精通 Python 語言大約需要如下這些步驟(個人愚見,不服你奈我何~~~):
------------------------
level 1:了解基本語法
這是最容易的一級,掌握了 Python 的基本語法,可以通過 Python 代碼實現常用的需求,不管代碼質量怎么樣。這部分內容,可以參考:The Python Tutorial。
------------------------
level 2:熟練使用常用的庫
------------------------
level 3:Pythonic
這一級別比上一級別稍難,但是還是可以輕松達到。所謂 Pythonic,就是相比其它語言,Python 可以通過更加優雅的實現方式(不管是語法糖還是什么),比如(包括但不限于) with、for-else、try-else、yield 等。
另外你還需要掌握這些所謂魔法的實現原理,了解 Python 在語法層面的一些協議,可以自己實現語法糖。如 with 的實現方式(上下文管理器)等。
達到這一級,你的代碼可以看起來很漂亮了。這部分內容,可以參考:
------------------------
level 4:高級玩法
掌握 Python 的內存機制、GIL 限制等,知道如何改變 Python 的行為,可以輕松寫出高效的優質的 Python 代碼,能夠輕松分辨不同 Python 代碼的效率并知道如何優化。
------------------------
level 5:看透本質
閱讀 Python 的 C 實現,掌握 Python 中各種對象的本質,掌握是如何通過 C 實現面向對象的行為,對于常見的數據結構,掌握其實現細節。到這一步,需要將 Python 源碼學習至少一遍,并對關鍵部分有較深層次的理解。
------------------------
level 6:手到拈來,一切皆空
不可說,不必說~
--------------------- 以下為補充說明 ---------------------------
看到評論區有朋友誤解,這里解釋一下。
首先,以上步驟并不是打怪升級,不存在到了一級再去第下一級,你完全可以在熟練標準庫的過程中掌握語言的實現原理等,這并不矛盾。所以那些評論說「我已經 xx 級了, xx 時候要到 xx 級」的朋友們,希望不要誤解了我的意思,你不必將自己限制死,而可以很靈活的變通。
另外題干中的「招聘要求寫著“精通 Python 語言”」,對于這樣的招聘要求,絕大多數其實是 HR 腦殘(不排除少部分公司真的有特殊需求),一般面對這樣的公司我會選擇繞道而行。既然是找工作,還是要找自己滿意且公司本身很不錯的,人生苦短,何必跟自己過不去呢?說到這里,我看知乎的招聘崗位中(知乎招聘),貌似沒有出現「精通」二字,自認技術高超的小伙伴可以去試試看喲~~~
最后,希望各位不要被某些答案「不需要精通 xx 語言」這樣的言論干擾,編程語言有很多相似的地方,個人覺得掌握一門語言的底層實現,對自身的編程水平提升是很有幫助的。但是要搞清楚,僅僅編程語言是不夠的,如何使用一門編程語言做有趣的事情,這很重要。 編輯于 10:16?12 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???申請轉載 101贊同 反對,不會顯示你的姓名 shell xu 101?人贊同 先說好,我的回答僅限于這個問題。
讓我們拿游泳來打比方吧。
某個游泳池要開業,所以需要一些救生員。于是他就貼出了求職公告。誠聘救生員,需精通游泳,待遇從優,非誠勿擾。
然后有人就在X乎上問了。大神們,什么叫做精通游泳?
嘛,我覺得吧,你起碼得能在平靜水面游個200米吧。
哎呀這個太基本了。既然是精通游泳,起碼你得把蛙泳仰泳蝶泳自由泳各來個一公里吧。
年輕人,不要總想著搞個大新聞。主席暢游長江,談笑風生,也沒敢自稱精通游泳。你游沒游過長江啊。
半年后,游泳池倒閉了。
HR寫“精通”的意思是,請新手有自知之明,我們需要一些能解決我們問題的人。什么叫能解決問題其實他也不明白,反正Team Leader滿意就行。他希望的是差不多就得了,多來幾個人才是正事(這才是人家的KPI)。而不是一年總共才上門一個人,而且還是個龜叔這個級別的人。實際上龜叔真的來了他才不知道該怎么辦才好。就好像泳池招聘廣告,只是希望你能在需要的時候,跳下去救人。而不是希望在泳池的旁邊,養四個菲爾普斯。。。 發布于 2016-05-24?23 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 134贊同 反對,不會顯示你的姓名 孫竟?,只差個程序員就能上市了! 134?人贊同當你覺得它很美的時候,你入門了。
當你覺得它很好用的時候,你掌握它了。 當你發現原來還有很多不知道的東西時,你是高手了。 當你知道這個問題沒有答案時,你已經合格了。 發布于 2012-07-03?13 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利
4贊同 反對,不會顯示你的姓名 brambles?,http://github.com/bramblex 4?人贊同 我個人是很反對對一個語言使用“精通”這個詞的。因為廣大碼農嘴里的“精通xxx”實際上毫無意義。代表不了任何東西。
代碼是一個工具,就像一只筆一樣。你精通“使用”這只筆是毫無卵用的,而廣大碼農嘴里“精通xxx語言”其實就是精通”使用“xxx語言而已。
精通使用一只筆是沒有太大意義的(但是前提必須要基本會用哈),有意義的是你精通拿這只筆來做什么事,是拿來寫書法、寫文章或者是畫畫。然而寫書法好的人換一只不那么熟的筆就不會寫字了嗎?寫文章的換只筆就寫不出好文章了?畫畫的換只筆就畫不出畫了?
那這書法,文章、畫畫代表的是什么呢?領域!
你們要明白:
搞安卓的Java和搞J2E的Java不是一個Java
搞嵌入式的c和搞桌面應用的c不是一個c
搞游戲引擎的c++和搞jvm的c++也不是一個c++
搞科學計算的python和搞web的python也不是一個python 發布于 2016-05-25?1 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 5贊同 反對,不會顯示你的姓名 古葉?,軟件工程師/項目經理 5?人贊同 的確,在招聘要求上寫“精通XX技術”的都可以理解為是句廢話。程序員大部分都是較真的人,看到精通xx的要求很多人就想自己肯定不算精通,雖然也有10w+以上的代碼量了。奉勸招聘單位,少寫這樣的要求,否則很多合格的人可能因為自謙而不敢面試,翻完“30天精通XX”的人可能都跑來面試了。
再廢話一下學語言的態度。其實寫代碼跟寫文章沒什么兩樣,就拿寫文章來說,你寫的是嚴謹科學的論文呢,還是文字爐火純青又優雅的散文呢?你寫的是宏篇巨著,比如“戰爭與和平”之類,還是寫一個通知呢?如果寫的是論文,可以類比普通的軟件,簡單、直觀、好維護、結構清晰就OK了,如果寫的是散文,類比那些NB人物寫的精巧框架,使用了很多語言技巧,展現了NB人物對該語言的深刻理解,適用于流芳百世類型。如果寫宏篇巨著,比如一個大型的業務系統、操作系統等,就涉及到架構問題了,語言的重要性退居2位,寫個通知,隨便吧,能用就行。 發布于 2016-02-26?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 9贊同 反對,不會顯示你的姓名 劉惟楚?,屬蛇 9?人贊同 1.能解決你要解決的問題。
2.在不滿足1的時候可以通過google和stackoverflow等等手段滿足1 發布于 2013-06-18?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 4贊同 反對,不會顯示你的姓名 Kenneth?,程序員中的極品 4?人贊同 樓上都是細枝末節的廢話,其實想考察精通不精通很簡單。知道什么時候適合用python,什么時候不適合。 發布于 2013-06-07?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 663贊同 反對,不會顯示你的姓名 Rio?,IT 公論 · 內核恐慌 · 瘋投圈 · IPN OurDearAmy、?安江澤、?玉伯、?鋼盅郭子?等?663?人贊同 我認為「精通」要滿足如下條件:
熟知主流硬件體系(x86, x64) 熟知 CPython 的具體實現,如若可能至少通讀源碼三遍以上
熟知每條 Python bytecode 如何被解釋執行
熟知每條 Python 語句如何 compile 成 bytecode
熟知 Python 主要數據結構所采用的優化手段 熟知 JIT 以及哪些場合下 PyPy 會比 CPython 有較大性能提高、以及有什么代價
所以我一直只敢稱自己為 「中級 Pythonista」。對于那些僅僅知道怎么用 Python 就敢自稱「精通」的人:專家不是那么好當的,沒有金剛鉆別攬瓷器活。不懂那么多底層細節就不要隨便說自己「精通」,說自己「擅長」不會被人看不起。
@米嘉 引用的 StackOverflow 上列的那幾項條件是作為將 Python 用于主要工作語言所需要的基本條件,敢于因此而稱自己「精通 Python」要讓不少人笑掉大牙。況且那幾項還有幾個嚴重問題:
我有一定的python的開發經驗,大概10w行python代碼量,主要集中在科學計算和較大型科學計算系統的開發,我覺得最重要的是你有能力做什么,而不是你做了什么,你沒事去讀什么python源碼呀?你需要什么性能瓶頸了?要寫什么C extension要借鑒源碼么?為了讀而讀,浪費時間。
簡單講一下我對“精通”python的理解:
1. 熟悉語法以及原聲數據結構
2. 熟悉基本實現中的性能特點,就是知道什么操作會慢
3. 會使用profile以及基于profile的性能分析工具
4. 會使用運行時編譯和靜態編譯的工具。pypy,numba,cython,ctypes,original C/C++ extension
5. 熟悉你所在領域的拓展庫,比如我,科學計算方面的庫不要太多,numpy衍生出來的一大堆大堆
6. 了解基本的編譯過程,基本的操作系統知識(只要你C、C++學的還行就可以了)
最最重要的,良好的編碼習慣,程序結構設計習慣,這對弱類型語言尤其重要。
不要寫了1-2w行之后,就要重構一次,這樣很傷的。
語言,是工具,不是目的。 發布于 2014-10-19?13 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 27贊同 反對,不會顯示你的姓名 Yarkee?,我們的征途是星辰大海 27?人贊同 我覺得,我們學語言的目的應該是用語言來解決我們遇到的問題,來實現我們的想法,而不是把語言修煉到什么境界。語言說到底只是工具而已。 發布于 2012-04-25?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 14贊同 反對,不會顯示你的姓名 鮑哲?,無 14?人贊同 我只是用python來做我的實驗,實現我的算法,我遇到什么問題就是簡單的看看手冊里面怎么使用python,沒有過多的糾結如何去精通它。python給我帶來的好處就是:它在實現算法時候更快速更高效,本來用c++需要寫幾天的東西,python很快就寫完了,實驗可以更快的得到結果。應該說:語言是為人服務的,而你的使用目的也決定了這門語言到底帶給你什么。 發布于 2013-07-06?2 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 88贊同 反對,不會顯示你的姓名 劉彬?,有所思 88?人贊同 我覺得根本就不存在所謂的精通python,C,java或任何一種編程語言。
只能是精通:tcp ip,http,數學建模,最優化,設計模式,數據挖掘,概率論,圖像處理,信息論和編碼,信息安全和加密,操作系統,編譯原理,arm架構,等等等等。
語言終歸只是工具,所謂精通語言對于多數人一點用都沒有,除非你要自己設計一門語言。就好比于我精通漢語,知道各種生僻字,知道一個字的六種寫法,這并沒多大用處。重要的能構思奇妙故事的想象力,能準確解讀文字的閱歷和思維能力。
對于編程來說,語言就是不斷制造的工具,比精通工具更重要的是:如何用工具解決問題,明白工具是如何解決問題的。 發布于 昨天 20:26?8 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 110贊同 反對,不會顯示你的姓名 余弦?,在知道創宇黑客不神秘 110?人贊同 一群沒精通過 Python 的人來回答什么是「精通 Python」……
精通=精+通,搞定下面兩點:
1. 精于「Python 魔法」,能做到那種很多時候信手拈來、觸類旁通;能做到出了棘手 Bug,能順利調試解決;至于 Pyhonic,那是基本要求
2. 通于「創造想創造的東西」,而不是熟讀 Python 源碼,然而對于如何創造卻一臉茫然
Python 創造面向的細分領域無數種,你要精通哪一種?這才是應該正視的根本。比如:精通爬蟲:-) 發布于 2016-05-26?14 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 8贊同 反對,不會顯示你的姓名 高天蒲?,我想從事python開發,哪位哥推薦一下~ 8?人贊同 任何人能做到的僅僅時對這門語言本身的精通,
包括python作者在內的每個人都不知道python有多少第三方的包,類庫,框架吧?
你拿Python做什么,需要用到哪些東西,劃定一個范圍,才有人敢說是否精通! 發布于 2011-08-14?1 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 4贊同 反對,不會顯示你的姓名 業余打字員?,不輕信,不輕疑 4?人贊同 熟練內置數據結構
熟練類
熟練list/dict comprehension
熟練map,filter,reduce以及functools,itertools
熟悉裝飾器,lazy evaluation
熟悉測試工具doctest,unittest等
根據自己方向熟練第三方框架或者庫,如Django,scrapy,numpy,mateplotlib,sklearn等
理解SICP,以及解釋器的構造
理解python源碼以及部分功能的實現
自己實現一個python解釋器 編輯于 2016-07-09?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 8贊同 反對,不會顯示你的姓名 kula?,一個程序員 8?人贊同 1, 了解python語法特性
2, 熟練使用流行的python第三方類庫
3,能夠給第三方python庫提交補丁
from:?https://www.zhihu.com/question/19794855#answer-40002128 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
引用下Raymond的大概標準
1.了解主要數據結構, 底層實現,和常用相關優化法.
2.了解class和object在python里怎么實現的(相關metaclass的知識)
3. 熟悉相關庫
4. 了解cpython和pypy
5. 一顆謙虛, 謹慎而且好學的心 發布于 2013-07-04?1 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 215贊同 反對,不會顯示你的姓名 羅伊?,后端工程師 215?人贊同 更新:
之前在組里分享過,后端那些事,有興趣可以看看。
要想精通python,寫的代碼首先得pythonic,自己閉門造車肯定不行,肯定需要研讀牛B的開源代碼,在這過程中會遇到python的許多高階用法
1.裝飾器 裝飾器在框架中運用的很多,比如flask_login,要精通至少很隨意的寫出滿足需求的裝飾器,用裝飾器肯定需要functools模塊的支持
2.生成器 說道生成器就自然地聯系到各種推導式(列表,元祖,字段,集合),那肯定也要提到itertools模塊,contextlib標準庫中是個典范,說到contextlib就需要提到with協議,迭代器協議,以及標準庫中的哪些實現了它們,如文件描述符,線程鎖,繼續延伸的話需要了解greenlet提供的協程,那就不得不提gevent,eventlet
3.描述符 這你就得知道所有的函數其實都是描述符,property,classmethod,staticmethod都是通過描述符實現的,那就得提到werkzeug和bottle都提供的cached_property,都是訪問屬性的就得提到
__getattr__和__getattribute__,知道在合適的時候定義合適的方法簡化流程
4.元類 其實這玩意用處很大,如sqlalchemy,django的orm中field的定義都用到了它,那你得知道當python解析py時,發現__metaclass__的時候就會調用元類的__new__和__init__,如果你理解元類的__new__和__init__的第一個參數都是類(而不是self)那元類就差不多了
5.多線程 雖說python由于gil的限制不能利用多核,但在處理io密集型的任務還是有很大好處的,
那得知道threading.RLock是線程可重入鎖,daemon thread的用處(python執行環境會等待所有非daemon thread的結束),Queue是線程安全的鎖,logging是線程安全的日志模塊,還有線程池也要熟悉
6.其它 如python2,6/7包含了不少新特性,如abc模塊的抽象方法機制,collections提供的有用容器,python中的編碼問題,super為啥需要兩個參數,而3不需要參數,經典的閉包問題,NotImplemented和NotImplementedError的區別,多繼承的mro問題,相對導入原理(__name__,如果看最新開源代碼,基本都是相對導入)......
其實還有很多,但更多的是和業務相關,比如正則表達式,那至少得知道貪婪,非貪婪,命名組等。搞服務器開發,socket,twisted,gevent肯定要精通。搞web開發,django,flask,tornado得熟悉。。。。 編輯于 2016-05-26?12 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 425贊同 反對,不會顯示你的姓名 xlzd?,個人博客:http://xlzd.me,技術宅~ 渠志倍?等?425?人贊同 你們所說的什么要怎樣數據分析、爬蟲、Web 等,在我看來那不是精通 Python,而是精通某一領域,拋開 Python 換用另一門語言也可,在我看來,精通 Python 語言大約需要如下這些步驟(個人愚見,不服你奈我何~~~):
------------------------
level 1:了解基本語法
這是最容易的一級,掌握了 Python 的基本語法,可以通過 Python 代碼實現常用的需求,不管代碼質量怎么樣。這部分內容,可以參考:The Python Tutorial。
------------------------
level 2:熟練使用常用的庫
- 熟悉常用 standard library 的使用,包括但不限于 copy / json / itertools / collections / hashlib / os / sys 等,這部分內容,可以參考:The Python Standard Library。
- 熟悉常用的第三方庫,這就根據每個人不同的用法而有所不同了,但是一定要掌握你所常用的那個領域里的第三方庫。
------------------------
level 3:Pythonic
這一級別比上一級別稍難,但是還是可以輕松達到。所謂 Pythonic,就是相比其它語言,Python 可以通過更加優雅的實現方式(不管是語法糖還是什么),比如(包括但不限于) with、for-else、try-else、yield 等。
另外你還需要掌握這些所謂魔法的實現原理,了解 Python 在語法層面的一些協議,可以自己實現語法糖。如 with 的實現方式(上下文管理器)等。
達到這一級,你的代碼可以看起來很漂亮了。這部分內容,可以參考:
- The Python Language Reference
- Python HOWTOs
------------------------
level 4:高級玩法
掌握 Python 的內存機制、GIL 限制等,知道如何改變 Python 的行為,可以輕松寫出高效的優質的 Python 代碼,能夠輕松分辨不同 Python 代碼的效率并知道如何優化。
------------------------
level 5:看透本質
閱讀 Python 的 C 實現,掌握 Python 中各種對象的本質,掌握是如何通過 C 實現面向對象的行為,對于常見的數據結構,掌握其實現細節。到這一步,需要將 Python 源碼學習至少一遍,并對關鍵部分有較深層次的理解。
------------------------
level 6:手到拈來,一切皆空
不可說,不必說~
--------------------- 以下為補充說明 ---------------------------
看到評論區有朋友誤解,這里解釋一下。
首先,以上步驟并不是打怪升級,不存在到了一級再去第下一級,你完全可以在熟練標準庫的過程中掌握語言的實現原理等,這并不矛盾。所以那些評論說「我已經 xx 級了, xx 時候要到 xx 級」的朋友們,希望不要誤解了我的意思,你不必將自己限制死,而可以很靈活的變通。
另外題干中的「招聘要求寫著“精通 Python 語言”」,對于這樣的招聘要求,絕大多數其實是 HR 腦殘(不排除少部分公司真的有特殊需求),一般面對這樣的公司我會選擇繞道而行。既然是找工作,還是要找自己滿意且公司本身很不錯的,人生苦短,何必跟自己過不去呢?說到這里,我看知乎的招聘崗位中(知乎招聘),貌似沒有出現「精通」二字,自認技術高超的小伙伴可以去試試看喲~~~
最后,希望各位不要被某些答案「不需要精通 xx 語言」這樣的言論干擾,編程語言有很多相似的地方,個人覺得掌握一門語言的底層實現,對自身的編程水平提升是很有幫助的。但是要搞清楚,僅僅編程語言是不夠的,如何使用一門編程語言做有趣的事情,這很重要。 編輯于 10:16?12 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???申請轉載 101贊同 反對,不會顯示你的姓名 shell xu 101?人贊同 先說好,我的回答僅限于這個問題。
讓我們拿游泳來打比方吧。
某個游泳池要開業,所以需要一些救生員。于是他就貼出了求職公告。誠聘救生員,需精通游泳,待遇從優,非誠勿擾。
然后有人就在X乎上問了。大神們,什么叫做精通游泳?
嘛,我覺得吧,你起碼得能在平靜水面游個200米吧。
哎呀這個太基本了。既然是精通游泳,起碼你得把蛙泳仰泳蝶泳自由泳各來個一公里吧。
年輕人,不要總想著搞個大新聞。主席暢游長江,談笑風生,也沒敢自稱精通游泳。你游沒游過長江啊。
半年后,游泳池倒閉了。
HR寫“精通”的意思是,請新手有自知之明,我們需要一些能解決我們問題的人。什么叫能解決問題其實他也不明白,反正Team Leader滿意就行。他希望的是差不多就得了,多來幾個人才是正事(這才是人家的KPI)。而不是一年總共才上門一個人,而且還是個龜叔這個級別的人。實際上龜叔真的來了他才不知道該怎么辦才好。就好像泳池招聘廣告,只是希望你能在需要的時候,跳下去救人。而不是希望在泳池的旁邊,養四個菲爾普斯。。。 發布于 2016-05-24?23 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 134贊同 反對,不會顯示你的姓名 孫竟?,只差個程序員就能上市了! 134?人贊同
代碼是一個工具,就像一只筆一樣。你精通“使用”這只筆是毫無卵用的,而廣大碼農嘴里“精通xxx語言”其實就是精通”使用“xxx語言而已。
精通使用一只筆是沒有太大意義的(但是前提必須要基本會用哈),有意義的是你精通拿這只筆來做什么事,是拿來寫書法、寫文章或者是畫畫。然而寫書法好的人換一只不那么熟的筆就不會寫字了嗎?寫文章的換只筆就寫不出好文章了?畫畫的換只筆就畫不出畫了?
那這書法,文章、畫畫代表的是什么呢?領域!
你們要明白:
搞安卓的Java和搞J2E的Java不是一個Java
搞嵌入式的c和搞桌面應用的c不是一個c
搞游戲引擎的c++和搞jvm的c++也不是一個c++
搞科學計算的python和搞web的python也不是一個python 發布于 2016-05-25?1 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 5贊同 反對,不會顯示你的姓名 古葉?,軟件工程師/項目經理 5?人贊同 的確,在招聘要求上寫“精通XX技術”的都可以理解為是句廢話。程序員大部分都是較真的人,看到精通xx的要求很多人就想自己肯定不算精通,雖然也有10w+以上的代碼量了。奉勸招聘單位,少寫這樣的要求,否則很多合格的人可能因為自謙而不敢面試,翻完“30天精通XX”的人可能都跑來面試了。
再廢話一下學語言的態度。其實寫代碼跟寫文章沒什么兩樣,就拿寫文章來說,你寫的是嚴謹科學的論文呢,還是文字爐火純青又優雅的散文呢?你寫的是宏篇巨著,比如“戰爭與和平”之類,還是寫一個通知呢?如果寫的是論文,可以類比普通的軟件,簡單、直觀、好維護、結構清晰就OK了,如果寫的是散文,類比那些NB人物寫的精巧框架,使用了很多語言技巧,展現了NB人物對該語言的深刻理解,適用于流芳百世類型。如果寫宏篇巨著,比如一個大型的業務系統、操作系統等,就涉及到架構問題了,語言的重要性退居2位,寫個通知,隨便吧,能用就行。 發布于 2016-02-26?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 9贊同 反對,不會顯示你的姓名 劉惟楚?,屬蛇 9?人贊同 1.能解決你要解決的問題。
2.在不滿足1的時候可以通過google和stackoverflow等等手段滿足1 發布于 2013-06-18?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 4贊同 反對,不會顯示你的姓名 Kenneth?,程序員中的極品 4?人贊同 樓上都是細枝末節的廢話,其實想考察精通不精通很簡單。知道什么時候適合用python,什么時候不適合。 發布于 2013-06-07?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 663贊同 反對,不會顯示你的姓名 Rio?,IT 公論 · 內核恐慌 · 瘋投圈 · IPN OurDearAmy、?安江澤、?玉伯、?鋼盅郭子?等?663?人贊同 我認為「精通」要滿足如下條件:
所以我一直只敢稱自己為 「中級 Pythonista」。對于那些僅僅知道怎么用 Python 就敢自稱「精通」的人:專家不是那么好當的,沒有金剛鉆別攬瓷器活。不懂那么多底層細節就不要隨便說自己「精通」,說自己「擅長」不會被人看不起。
@米嘉 引用的 StackOverflow 上列的那幾項條件是作為將 Python 用于主要工作語言所需要的基本條件,敢于因此而稱自己「精通 Python」要讓不少人笑掉大牙。況且那幾項還有幾個嚴重問題:
- 第3點:如若可能,盡量避免 map/reduce/fitler,而用 list/generator/set comprehension,代碼要清晰得多,GvR 如此說。xrange 和 range 的區別在 Python 3 中馬上就要滾蛋了,所以如非必要,不要大量使用 xrange。
- 第5點:敢于在 CPython 中大量使用遞歸是對 CPython 實現的公然侮辱。Python 的多個穩定實現都沒有 TCO,遞歸會讓性能迅速下降。記住一點:Python 中函數調用非常昂貴,可讀性、可維護性影響不大的情況下,能展開函數調用的時候盡量展開、遞歸能轉化成循環的盡量轉化。遞歸也不是人類自然的思考方式。
- 第7點:看書是對的,但不要把 Python 當作一門經典函數式語言對待,因為它不是。你當它是,它會很痛苦(“為毛要這樣濫用我!?”),你也會很痛苦(“為毛你不這樣實現 blah blah!?”)。SICP 是本好書,但不要因此而教條。要清楚的知道什么時候用函數式,什么時候用面向對象,什么時候用面向過程,什么時候用面向任務,什么時候用面向結果。在一棵樹上吊死是大多數非理性死忠的表現。
我有一定的python的開發經驗,大概10w行python代碼量,主要集中在科學計算和較大型科學計算系統的開發,我覺得最重要的是你有能力做什么,而不是你做了什么,你沒事去讀什么python源碼呀?你需要什么性能瓶頸了?要寫什么C extension要借鑒源碼么?為了讀而讀,浪費時間。
簡單講一下我對“精通”python的理解:
1. 熟悉語法以及原聲數據結構
2. 熟悉基本實現中的性能特點,就是知道什么操作會慢
3. 會使用profile以及基于profile的性能分析工具
4. 會使用運行時編譯和靜態編譯的工具。pypy,numba,cython,ctypes,original C/C++ extension
5. 熟悉你所在領域的拓展庫,比如我,科學計算方面的庫不要太多,numpy衍生出來的一大堆大堆
6. 了解基本的編譯過程,基本的操作系統知識(只要你C、C++學的還行就可以了)
最最重要的,良好的編碼習慣,程序結構設計習慣,這對弱類型語言尤其重要。
不要寫了1-2w行之后,就要重構一次,這樣很傷的。
語言,是工具,不是目的。 發布于 2014-10-19?13 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 27贊同 反對,不會顯示你的姓名 Yarkee?,我們的征途是星辰大海 27?人贊同 我覺得,我們學語言的目的應該是用語言來解決我們遇到的問題,來實現我們的想法,而不是把語言修煉到什么境界。語言說到底只是工具而已。 發布于 2012-04-25?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 14贊同 反對,不會顯示你的姓名 鮑哲?,無 14?人贊同 我只是用python來做我的實驗,實現我的算法,我遇到什么問題就是簡單的看看手冊里面怎么使用python,沒有過多的糾結如何去精通它。python給我帶來的好處就是:它在實現算法時候更快速更高效,本來用c++需要寫幾天的東西,python很快就寫完了,實驗可以更快的得到結果。應該說:語言是為人服務的,而你的使用目的也決定了這門語言到底帶給你什么。 發布于 2013-07-06?2 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 88贊同 反對,不會顯示你的姓名 劉彬?,有所思 88?人贊同 我覺得根本就不存在所謂的精通python,C,java或任何一種編程語言。
只能是精通:tcp ip,http,數學建模,最優化,設計模式,數據挖掘,概率論,圖像處理,信息論和編碼,信息安全和加密,操作系統,編譯原理,arm架構,等等等等。
語言終歸只是工具,所謂精通語言對于多數人一點用都沒有,除非你要自己設計一門語言。就好比于我精通漢語,知道各種生僻字,知道一個字的六種寫法,這并沒多大用處。重要的能構思奇妙故事的想象力,能準確解讀文字的閱歷和思維能力。
對于編程來說,語言就是不斷制造的工具,比精通工具更重要的是:如何用工具解決問題,明白工具是如何解決問題的。 發布于 昨天 20:26?8 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 110贊同 反對,不會顯示你的姓名 余弦?,在知道創宇黑客不神秘 110?人贊同 一群沒精通過 Python 的人來回答什么是「精通 Python」……
精通=精+通,搞定下面兩點:
1. 精于「Python 魔法」,能做到那種很多時候信手拈來、觸類旁通;能做到出了棘手 Bug,能順利調試解決;至于 Pyhonic,那是基本要求
2. 通于「創造想創造的東西」,而不是熟讀 Python 源碼,然而對于如何創造卻一臉茫然
Python 創造面向的細分領域無數種,你要精通哪一種?這才是應該正視的根本。比如:精通爬蟲:-) 發布于 2016-05-26?14 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 8贊同 反對,不會顯示你的姓名 高天蒲?,我想從事python開發,哪位哥推薦一下~ 8?人贊同 任何人能做到的僅僅時對這門語言本身的精通,
包括python作者在內的每個人都不知道python有多少第三方的包,類庫,框架吧?
你拿Python做什么,需要用到哪些東西,劃定一個范圍,才有人敢說是否精通! 發布于 2011-08-14?1 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 4贊同 反對,不會顯示你的姓名 業余打字員?,不輕信,不輕疑 4?人贊同 熟練內置數據結構
熟練類
熟練list/dict comprehension
熟練map,filter,reduce以及functools,itertools
熟悉裝飾器,lazy evaluation
熟悉測試工具doctest,unittest等
根據自己方向熟練第三方框架或者庫,如Django,scrapy,numpy,mateplotlib,sklearn等
理解SICP,以及解釋器的構造
理解python源碼以及部分功能的實現
自己實現一個python解釋器 編輯于 2016-07-09?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 8贊同 反對,不會顯示你的姓名 kula?,一個程序員 8?人贊同 1, 了解python語法特性
2, 熟練使用流行的python第三方類庫
3,能夠給第三方python庫提交補丁
from:?https://www.zhihu.com/question/19794855#answer-40002128 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的怎么样才算是精通 Python?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原来小清新色调是这样调出来的~
- 下一篇: Java 基础复习实践 --- Hash