一個合格的 Python 程式員應該具備怎樣的基本能力?包括哪些具體方面?

來源:互聯網
上載者:User
如題

回複內容:

一百多人關注這個問題,沒有一個人來回答。給了我一個拋磚引玉的機會。

首先一個合格的 Python 程式員是一個很模糊的概念,並沒有一個量化的標準可以檢測每個人的技能水平,每個人對於合格的定義也不一樣,我自己心裏面也沒有對合格有一個準確的標準。我大概說下自己對於 Python 技能成長的階段吧,因為是從創宇出來的, 所以其實也是拾人牙慧,從老楊那邊偷來的。

0. 聽說過 Python。

聽說過 Python 這門語言,知道哪些公司(Google,Dropbox,Douban)在用他,可以用 Python 做哪些東西(Web開發,科學計算,Tlog,平時的指令碼)。

1. 用過 Python

使用 Python 寫過一些簡單的東西,比如寫一個簡單爬蟲,爬取自己想聽的音樂。
大概的標準就是寫過一些小工具,但是對於 Python 還不是特別熟悉,參考文檔能寫寫東西。

2. 會用 Python

對一個項目,能夠用 Python 快速完成,在上一個(用過 Python)基礎上,使用 Python 的次數有一個增加,可以說成是會用 Python。
對於 Python 的常用庫都有一定的瞭解,對於 Python 的一些缺陷能夠瞭解並且避免。比如被人詬病的多線程,在什麼情景下可以使用 Python 的多線程?

比如列表的效能開銷略大, 有些時候可以用數組來代替?

比如操作dict 的時候盡量用迭代器?

3. 熟悉 Python

熟悉 Python,瞭解 Python 的缺陷,並且知道為什麼有這種缺陷。
熟悉 Python 大概就是在`會用 Python` 的基礎上,不僅僅是 `know how`,還要 `know why`。

對 Python 的運行機制更加瞭解,為什麼 CPython 被人說慢,而 PyPy 更快?

為什麼使用 list 對記憶體開銷那麼大?

瞭解 Python 的記憶體管理以及記憶體回收的細節?


4. 精通 Python

接觸的人中,我認為可以說是精通 Python 的真是少之又少。Q.yuhen 算是一個。
所以這一部分沒法寫,我得等我敢跟人吹牛說自己精通 Python 的時候,再回來補充一下什麼叫精通。



先寫到這裡,要幹活了。

按照上面說的達到 會用 Python 大概可以稱之為一個合格的 Python 程式員。

-----------------------------------------------------------------------------------------

到家之後給貓洗了個澡,太殘忍了。

上面列出的僅僅是對於 Python 的進階,但是在正常的工作過程中,僅僅專註於一門程式設計語言而不瞭解其他的東西,很難完成日常的工作,所以一個合格的 Python 程式員,除了在對於 Python 的瞭解比其他的要更好之外,還需要掌握其他的技術:
  • 作業系統
  • TCP/IP 等網路通訊協定知識

  • 資料庫
  • 演算法
  • 等等等等
上面羅列出來僅僅是我想到,覺得自己需要去完善的知識面,至於一個 Python 是不是要全部瞭解,我也不能給出合理的說法,畢竟每個人的工作情境不同。還是希望有前輩或者後浪,來給出一個精彩的答案。python應用這麼廣,每個領域都要求不一樣。對於資料採礦、機器學習這塊,pandas、numpy這麼優秀的文檔至少要讀過幾遍,groupby、apply、merge總要會用,處理資料的時候能少寫多少個for。進一步,sklearn的文檔寫的圖文並茂,讀起來通俗易懂(統計藍,表示R的文檔看的我心傷~)。說這些都沒啥用,趕緊做個東西,入坑先。用Python通關(或暫時通關)幾個OJ,絕對是精通使用Python的最快路徑.
逼著你去竭盡全力最佳化代碼效率,完善程式結構,無盡的NA嘗試可以讓你把python的內部原理都猜個八九不離十

另一方面,OJ可以把Python運行效率低下的缺點暴露出來,比如同樣一個沒經過最佳化的演算法,用C/C++,可以在700ms內跑完通過OJ,但如果是Python來做會需要更多的時間比如5s,於是逾時TLE,Python不得不尋求更快的演算法來AC,所以用Python也是提高演算法水平的最好選擇。由於人的惰性,用C的普通演算法過了OJ就不去考慮最佳化和改進原先的演算法,這樣會就錯失很多提升演算法水平的機會。The Hitchhiker’s Guide to Python! 能完成任務,能完成需求,能提出解決方案並實現完成,這個是一個程式員應該具備的基本能力
Python程式員也不能例外一眼看出行縮排值

給你一個通用性的參考。

首先是硬知識:
語言應用要熟練,特別是調試和排錯。這是寫代碼的基礎。
類庫的選擇和可用性判斷要有經驗,這是加速開發,偷懶的關鍵。
OS相關的檔案系統,UI知識要熟悉,這是做UI和部署等基礎。
網路相關知識要精通,現在大部分軟體都和網路有關,不懂不行。

接著就是團隊合作,學習能力這些軟實力了。

高大上的東西,留給別人說吧,我就說幾個小點吧。

  1. 不這麼寫:
    from xxx import *

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.