編程零基礎應當如何開始學習 Python ?


零基礎學編程,用python入門是個不錯的選擇,雖然國內基本上還是以c語言作為入門開發語言,但在國外,已經有比較多的學校使用python作為入門編程語言。

具體怎麼選擇你的第一門編程語言可以看下圖:

好吧,廢話說完了,下面是正文,零基礎怎麼學習python。

========================正文分割線==========================

下面的內容是由淺入深,建議按照先後順序閱讀學習。

0.Python簡明教程

下載地址:python簡明教程中文.pdf

很簡潔的一本教材,就算沒有基礎,你也可以像讀小說一樣,花半天時間就可以讀完。

然後,下面這篇文章可以起到一個快速複習的作用:

分分鐘學會一門語言之Python篇


1.Python 開發教程

廖學峰大大的Python教程,我見過的寫得最好的Python開發教程之一,包括Python2.7和Python3兩個大版本的教程。

地址:Python教程 - 廖雪峰的官方網站


2.學完基礎知識,接下來就是掌握一個實用的開發框架進行實戰了。

Python有很多Web開發框架,大而全的開發框架非Django莫屬,用得也最廣泛.有很多公司有使用Django框架,如搜狐,騰訊等。以簡潔著稱的web.py,flask都非常易於上手,以非同步高性能著稱的tornado,源代碼寫得美如畫,知乎,Quora都在用。以下是Django框架很不錯的學習資料。

2-1)Django基礎教程

  • 被解放的姜戈01 初試天涯
  • 被解放的姜戈02 莊園疑雲
  • 被解放的姜戈03 所謂伊人
  • 被解放的姜戈04 各取所需
  • 被解放的姜戈05 黑面管家
  • 被解放的姜戈06 假作真時
  • 被解放的姜戈07 馬不停蹄

2-2)Django練手項目(使用Django開發博客):

  • django常用命令
  • django開發博客(1) 入門
  • django開發博客(2) 模板和數據查詢
  • django開發博客(3) 靜態文件、from應用與自定義
  • django開發博客(4) comments庫使用及ajax支持
  • django開發博客(5) markdown支持、代碼高亮、gravatar頭像服務
  • Django最佳實踐(中文版)

3. Python實踐項目

  • python項目實踐一:即時標記
  • python項目實踐二:畫幅好畫
  • python項目實踐三:萬能的XML
  • python項目實踐四:新聞聚合
  • python項目實踐五:虛擬茶話會
  • python項目實踐六:使用CGI進行遠程編輯
  • python項目實踐七:自定義公告板
  • python項目實踐八:使用XML-RPC進行遠程文件共享
  • python項目實踐十:DIY街機遊戲
  • python項目實踐九:文件共享2-GUI

4. 其他一些比較有用的資源
如何入門 Python 爬蟲? - 謝科的回答
Python正則表達式指南
【乾貨】Python爬蟲/文本處理/科學計算/機器學習/數據挖掘兵器譜
Python WSGI詳解

最後,http://www.the5fire.com/上也有很多好的學習資源.


直到前一陣子出版社的人聯繫我,問我願不願意出書
我才意識到自己寫這個專欄已經這麼久了
最近也老人問我,怎麼入門編程,要不要報班等等
我是從零基礎開始學習的,這裡分享一下我的學習過程

關於自學和培訓班

其實我沒有什麼資格來和大家討論這個問題,
因為我也是剛剛入門而已,並不能指導性的告訴大家應該怎麼樣
我只是說一下自己的看法:
自學,不用上培訓班!!!
首先我自己是完全沒有報培訓班的,所以覺得也沒這個必要
其次,如果你想將寫代碼作為自己的職業,那麼自學是必不可少的能力
如果什麼都得讓別人拉著你,那麼是不是太被動了?

興趣

我沒事喜歡逛知乎,有一段時間看到了這個問題:
利用爬蟲技術能做到哪些很酷很有趣很有用的事情: http://t.cn/RptGOPx
覺得回答的一個個炒雞酷炫
就對爬蟲產生了濃厚的興趣,
於是就開始了我的一路摸爬滾打

文本資料

想學寫爬蟲,Python的基礎知識肯定得補起來
這裡我推薦幾本我覺得很棒的入門書籍
最好按照順序閱讀,難度是由淺入深

  • 父與子的編程之旅: http://t.cn/R7s2ME8
    這本書說的都是一些基本的概念,告訴我們編程到底是怎麼一回事,初步了解Python的世界。
  • 笨方法學Python: http://t.cn/Rie7W7L
    這本書在知乎上都被推薦爛了,但是的確是一本不可多得的好書。但最後的部分對於零基礎的人來說,跨越程度有點大,如果看不懂,可以暫時跳過
  • 菜鳥教程 Python3教程 :http://t.cn/RqM5aF8
    從這裡,就可以完整的掌握Python這門語言的基礎語法、類型、函數、面向對象...
    這裡的內容都是最基本的解釋,只能告訴你一個大概。但這就是目前的我們所需要的,因為太難的,真的看不懂(比如 線程鎖 迭代器 生成器...)
  • 簡明教程: http://t.cn/RMP60Nw
    這相對於菜鳥教程,更加的精鍊和簡介,也是非常的棒!
  • 廖雪峰的Python3教程: http://t.cn/RK0qGu7
    相對於前面的教程來說,廖大的更加深入,我當初是直接看的廖大,看到後面雲里霧裡,所以完全零基礎的小夥伴,還是先嘗試其他比較簡單的好一點。

上面就是我推薦的一些入門的文本資料,
最後三個,可以按照自己的水平閱讀學習
也不一非要按照我推薦的順序,
當然,光看是沒用的,上面的例子也要跟著做才能有收穫

視頻慕課

有的小夥伴可能一看書就犯困,
更喜歡直接一點的視頻,
我當初是書和視頻一起結合著看的
下面推薦我上的幾門慕課:

  • 哈佛大學公開課:計算機科學cs50: http://t.cn/RwvcReG
    這門課對於我這種文科生來說,簡直是福音!!!通過這門課,你可以了解到計算機世界的基礎,為你以後的學習打下良好的基礎!沒看過的同學一定要去看!
  • 中國大學慕課:Python語言程序設計 http://t.cn/R6ELBBH
    這門課錄製的水平很高,還有對應的在線習題,學到最後還能有證書拿,每周同步進行的話也不會有太大的壓力
    我還把每周的習題上傳到Github了: https://github.com/Ehco1996/PythonPractice
  • 中國大學慕課: Python網路爬蟲與信息提取: http://t.cn/R6phGd9
    上面那門慕課老師開設的爬蟲課程,很棒很詳細,我學習爬蟲就是跟著這裡入門的!
  • 中國大學慕課:用Python玩轉數據: http://t.cn/RSN2yYR
    講了一些用Python做數據分析的基本方法,老師很有意思,不過前面的章節還涉及到一些基礎的部分,可以當做再複習一遍啦
  • 嵩天老師的其他Python課程 : http://t.cn/RptquK8
    這名老師開設了很多Python課程,各種方向的都有,
    其實學到這裡,可以多多嘗試一下,發現自己喜歡的方向
    看看嵩老師開設的課程:

基礎掌握之後?

當你覺得你已經掌握了Python的基本用法,
這個時候就該嘗試去『寫』一些小項目了,
不一定要自己去創造,可以去github上看看有什麼適合自己的項目,
fork一份到本地,看看別人的代碼是怎麼樣的
別人為什麼這樣寫...
自己模仿著能寫出差不多的東西么?
具體可以參考這個知乎問題:
Python 的練手項目有哪些值得推薦?https://www.zhihu.com/question/29372574

系統的學習爬蟲?

這裡我就推薦三份資料

  • 路人甲整理的:一份Python爬蟲電子書: https://zhuanlan.zhihu.com/p/28865834

    甲哥人炒雞nice啊!但是可能最近工作比較忙~這份資料是他辛苦整理出來的,內容很豐富!

  • 崔慶才的爬蟲教程 http://cuiqingcai.com/1052.html
    這個博主也很nice,當初我學著入門的時候也在這裡參考了很多資料!
  • 我的 從零開始寫Python爬蟲 專欄 https://zhuanlan.zhihu.com/Ehco-python
    容我自賣自誇一下,專欄里從基礎到實戰都有
    最近也把所有的文章鏈接都匯總到導言里了:
    可以看這裡: https://zhuanlan.zhihu.com/p/26673214?refer=Ehco-python

系統的學習Web?

這裡我推薦一個超級棒的Django教程:

  • 追夢人物的blog: http://zmrenwu.com/post/2/
    我的blog就是跟著這個教程不斷的完善,才有了現在的效果

還有一份Python Web開發的知識清單:

  • python web 入坑指南: http://python-web-guide.readthedocs.io/zh/latest/
    這我還沒看完,我準備利用最後這一年上學的時間來學習一下

剩下的?

全得靠你自己啦
一起努力吧!

每天的學習記錄都會 同步更新到:
微信公眾號: findyourownway

知乎專欄:https://zhuanlan.zhihu.com/Ehco-python

blog : www.ehcoblog.ml

Github: https://github.com/Ehco1996/Python-crawler


雖然我不是Python高手,但我是零基礎,之前會的都是軟體PS,PPT之類。
如果目的是想成為程序員,參考教學大綱。
如果只是學程序,理解科技,解決工作問題,我的方式可以參考使用:
1,找到合適的入門書籍,大致讀一次,循環啊判斷啊,常用類啊,搞懂(太難的跳過)
2,做些簡單習題,字元串比較,讀取日期之類 Python Cookbook不錯(太難太無趣的,再次跳過,保持興趣是最重要的,不會的以後可以再學)
3,加入Python討論群,態度友好笑眯眯(很重要,這樣高手才會耐心糾正你錯誤常識)。很多小問題,糾結許久,對方一句話點播思路,真的節約你很多時間。耐心指教我的好人,超級超級多謝。
4,解決自己電腦問題。比如下載美劇,零散下載了2,4,5,8集,而美劇共12集,怎樣找出漏下的那幾集?然後問題分解,1讀取全部下載文件名,2提取集的數字,3數字排序和(1--12)對比,找出漏下的。
5,時刻記住目的,不是為了當程序員,是為了解決問題。比如,想偷懶抓網頁內容,用urllib不行,用request也不行,才發現抓取內容涉及那麼多方面(cookie,header,SSL,url,javascript等等),當然可以聽人家勸,回去好好讀書,從頭讀。
或者,不求效率,只求解決,用ie打開網頁再另存為行不行?ie已經渲染過全部結果了。
問題變成:1--打開指定的10個網頁(一行代碼就行)。更複雜的想保存呢?利用已經存在的包,比如PAM30(我的是Python3),直接打開ie,用函數outHTML另存為文本,再用搜索函數(str搜索也行,re正則也行)找到數據。簡單吧?而且代碼超級短。
6,保持興趣,用最簡單的方式解決問題,什麼底層驅動,各種交換,留給大牛去寫吧。我們利用已經有的包完成。
7,耐心讀文檔,並且練習快速讀文檔。拿到新包,找到自己所需要的函數,是需要快速讀一次的。這個不難,讀函數名,大概能猜到是幹嘛的,然後看看返回值,能判斷是不是自己需要的。
8,寫幫助文件和學習筆記,並發布共享。教別人的時候,其實你已經自己再次思考一次了。
我覺得學程序就像學英文,把高頻率的詞(循環,判斷,常用包,常用函數)搞懂,就能拼裝成自己想要的軟體。
然後,http://stackoverflow.com 和http://Google.com 是很好用的。
然後,堅持下去~

6月10日補充------------------------------
一定要保持興趣,太複雜的跳過,就像小學數學,小學英語,都是由簡入深。
網路很平面,無數國際大牛著作好書,關於Python,演算法,電腦,網路,或者程序員思路,或者商業思維(浪潮之巔是本好書)等等,還有國際名校的網路公開課(中英文字幕翻譯完畢,觀看不是難事),講計算機,網路,安全,或者安卓系統,什麼都有,只要能持續保持興趣,一點點學習下去,不是難事。
所有天才程序員,都曾是兒童,回到兒童思維來理解和學習。覺得什麼有趣,先學,不懂的,先放著,遇到問題再來學,效果更好。
唯一建議是,不要太貪心,耐心學好一門優雅的語言,再學其它。雖然Javascript做特效很炫,或提某問題時,有大牛建議,用Ruby來寫更好之類,不要改方向。就像老笑話:「要學習遞歸,必須首先理解遞歸。」然後死循環一直下去。堅持學好一門語言,再研究其他。
即使一門語言,跟網路,資料庫等等相關的部分,若都能學好,再學其他語言,是很快的事情。
另外就是,用學英文的耐心來學計算機,英文遇到不懂的詞,抄下,查詢。
python里,看到Http,查查定義,看到outHtml,查查定義,跟初學英語時候一樣,不要直接猜意思,因為精確描述性定義,跟含糊自然語有區別的。而新人瞎猜,很容易錯誤理解,wiki,google很有用。

我還在使勁啃Python的路上~~ 一起加油:)

2012年8月26日補充線------------------------------------------------------------------
QQ群:22507237 陸續有些高手走了,也有新人加入。
另外 10月20日,上海有Python開發者大會,有空的孩子可以去。http://pycon2012.51qiangzuo.com/
給出2個截圖吧,我最近做的,真的很爛,但是能用:)
這個是上次Python測試題目「從電商網站的搜索頁中抓取製作商品圖片牆」。我選了最最容易的靜態網站。當然京東的抓取,比這種難。

這個很方便我自己每天查詢,用Python3 + PyQt4,用「公司名字」關鍵詞,在各個論壇,圖片,視頻,商場查詢。每天看一次,很方便快速了解信息。


一、說明

面對網路上紛繁複雜的資料,自己真是眼花繚亂,學的毫無章法,東一榔頭西一棒子,這樣不僅知識不能成為體系,自己的學習進度也不容易掌握,收效甚微。突然有個想法,就是把自己這幾天收藏的資料整理出文章出來,方便自己有章可依,逐步走上python小牛的境界……

PS:附上一些python相關的好文:

1.蕭大的編程入門指南

知乎獲贊無數的編程指南,介紹的不光是一門語言的入門,也是關於編程的入門,談到了作為一名程序員,應該掌握的一些計算機知識。

2. Python 編碼風格指南中譯版(Google SOC)

3. PythonTab中文網

------

二、Python社區

1. Python Tip社區

強烈推薦Python Tip,有刷題挑戰賽,同時,也有很多在線教程!練手實操必備!

2. 啄木鳥社區

3. 編程指南社區Co

三、入門階段

介紹一些入門的資料,對於有編程經驗的同學來講,入門資料學習並不是很費力。

1.簡明教程

入門教程里,簡明教程算是細節介紹相對詳細的了,知識面也覆蓋的挺全,入門資料的好選擇。

2.笨辦法學python

堅持看完了,儘管最後幾章沒去實現(主要是和我現在的需求不一致,不想花精力在那個上面)。有所收穫吧,但是,確實是入門的,知識不全面,入門夠用,風格特別,採用問答形式,學習過程挺有趣。

3.Python|Codecademy

在線挑戰,還沒用過,貌似現在對英文資料心裡還有種抵觸,必須克服!!!

4.實驗樓python研發工程師

包含了Linux/Vim/Git/SQL/Python/Django/Flask等學習課程。

6.老齊的零基礎學Python(第二版)

github版本,教程內容覆蓋很全,也有實戰項目介紹。

7.廖雪峰python2.7教程

現在已經有python3的教程了。

8.Vamei的的python快速教程

話說,我還加入了博主的粉絲群,後來加入了微信群,逗比一枚啊,現在好像去新加坡深造去了!博客文章還是很詳細的~

總結到這兒我已經有亂花漸入迷人眼的感覺了!光是入門就這麼多資料,看的過來嗎?看完得到猴年馬月啊!所以必須痛下決心,選擇自己覺得好的就OK!青菜蘿蔔,各有所愛,別人覺得好的,可能在你這兒就是看著不舒服!好吧,自己就選擇簡明,笨辦法,crossin,還有,codecademy!ok,暫時就這樣了!

四、充實階段

入門之後,對於這個語言的細節需要更進一步的了解,那麼提升階段必不可少。同時,對於計算機基礎不好的同學,了解計算機及編程相關背景知識也很關鍵。

1.《Python基礎教程》

根據自己學習javascript的經驗,一本好的教材真是獲益匪淺,它能讓你明白很多底層的東西。比如紅寶書《js高級程序設計》中關於閉包、原型鏈的講解就非常詳細!好吧,扯遠了,因此,學習python也是一樣,光是靠博客,在線文章是不能深入了解它的,選擇一門經典教材是你深入了解一門語言的必經之路!當然,也有推薦《Python核心編程(第二版)》的,但是自己只買了《Python基礎教程》因此,不做評價了,選中一本經典就可以了!何況自己離吃透它,還有很遠的距離的!

2. MIT計算機科學及編程導論

3. Harvard:計算機科學cs50

2和3屬於計算機入門課,之所以放到這兒,是因為介紹了計算機領域中相關的知識點,了解數據結構相關知識。其中,MIT的導論課老師的知識點是基於Python的,在學習時也能鞏固Python。編程入門指南中強烈推薦的的兩門公開課。(PS:網易真是良心,這兩門課都有中英字幕的視頻!)

4. Crossin教室

除了python教程之外,還有小程序,練手很好!在第一階段入門之後,來這裡做應用小程序,會找到成就感!除此之外,還有git等其他教程。是個不錯的入門練手的地方。

五、升華階段

有了紮實的基礎,那麼方向的選擇顯得尤為重要了。是數據分析,是web開發,還是遊戲開發。下面暫時分為這三個方面整理一下:

5.1 數據分析

1. 《利用Python進行數據分析》

這本書是一本大而全的利用Python數據分析的書,數據分析入門肯定夠夠的,寫的也很詳細。書的作者就是開發了用於數據分析的著名開源Python庫——pandas的作者!

2. scientific-python-lectures

英文資料,對Python數據分析中要用到的一些庫,pandas,numpy,matplotlib等等做了簡要介紹。Ipython Notebook形式的資料,示例代碼都很全。

3. Matplotlib Tutorial(譯)

Python製圖的入門資料,強烈推薦!在線版的資料,作者排版也很舒服,示例代碼也有,推薦!

4. 用Python做科學計算

最新發現的科學計算很棒的綜合性教程,更新到這兒,需要的同學自取!強烈推薦!

5.2 web開發

1. 自強學堂Django基礎教程

很詳細的一個Django教程,作者很詳細的介紹了每一步。有問題,作者回復也很詳細,推薦!同時,自強學堂上也有很多其他教程,是個不錯的網站,收藏!

2. Django搭建簡易博客教程

建議和1結合看,1的介紹相對更詳細一點。

3. 歡迎進入Flask大型教程項目

4. Flask指南

5.3 遊戲開發

1. 用Python和Pygame寫遊戲-從入門到精通

六、 計算機素養

1.《深入理解計算機系統》

七、 Python面試題

1. 聊聊Python面試那些事兒


歡迎回訪個人博客?Python入門資料大全(更新ing)


-----------------------------------------------更新-----------------------------------------------

  • Python機器學習入門資料整理

最好看好用的Python指南看這裡了!

記得來造數 - 新一代智能雲爬蟲這裡來玩,體驗零編程數據採集,從各種數據到各種信息!

提前說一下,這篇福利多多,別的不說,直接讓你玩回最有手感的懷舊遊戲,參數貼圖很方便自己可以根據喜好修改哦。

本篇通過以下四塊展開,提供大量資源對應。

【選一個好版本

有沒有看過《在下坂本,有何貴幹?》

那個坂本可以裝B,Python的版本則是你的工作環境。

首先,在學習之前一定會考慮一個問題——Python版本選擇

對於編程零基礎的人來說,選擇Python3。

1、學習基礎知識

首先,Python 是一個有條理的、強大的面向對象的程序設計語言。建議從下面課程開始:

  • Python 教程
  • Python 標準庫
  • 官方文檔 (非常貼心地提供中文翻譯)

首先需要學習Python的基礎知識,下載、安裝、導入庫、字元串處理、函數使用等等。

a、查看文章 BeginnersGuide/Download,按步驟下載正確的Python版本。

b、接下來,閱讀教程,並嘗試用你的新Python編譯器做一些簡單的練習。

  • 如果你之前沒有編程經驗,讀一下 [[BeginnersGuide/NonProgrammers], 裡面有適合你的教程列表。
  • 如果你之前有編程經驗,參考 BeginnersGuide/Programmers, 裡面列出了更多高級教程。
  • 如果英語不是你的母語,閱讀翻譯好的教程更適合你。參考 python.org"s 非英語資源列表.

c、當你讀完教程後,可以瀏覽Python在線文檔

d、在準備寫第一個程序前,你需要一個文本編輯器 PythonEditors

ps:有一個超贊的網站,提供很多文檔的中文翻譯,有Python、pandas、numpy、NLTk、Django等等,值得收藏。

一譯中文文檔

如果你更喜歡看視頻

  1. 零基礎學Python語言 嵩天老師的課程,非常全面細緻
  2. 零基礎入門學習Python 小甲魚的入門視頻,講課十分有趣
  3. Python for Everybody Course上非常經典的Python教學視頻

2、確定學習方向

Python職業學習方向很多,大體上分為這四個

針對各個方向,造數君提供了需要了解的標準庫:

  1. 後端開發:Django、Flask、Tornado
  2. 數據科學:NumPy、Pandas、Matplotlib
  3. 網路爬蟲、Requests、Scrapy、threading
  4. 機器學習:scikit-learn、TensorFlow

後端開發學習圖

同時,你也可以用Python來寫遊戲

http://www.pygame.org/tags/all

除了文檔,還有這些地方可以學習:

  1. 後端開發_Python入門基礎到高級教程
  2. Python研發工程師學習路線
  3. Full Stack Python
  4. Think Python
  5. awesome-python

舉個例子,以前學習Django的時候,看到全英文的文檔,當時一臉懵逼。後來找到一譯,看完了文檔,又找到了一些博客:

  • 前言_Django博客教程 學光的教程
  • Django 模板 自強學堂的分享
  • Django從入門到實戰 實驗樓的路徑學習
  • python web 入坑指南 知乎後端工程師所著

3、項目練手

只會埋頭敲代碼肯定不行的,需要自己動手寫寫具體的項目,那麼去哪裡找呢?

造數君以前曾經提供了一些:Python 有哪些一千行左右的經典練手項目?

Tips:如果你想尋找某個項目,可以去Github上找。

例如,我想寫一個知乎爬蟲,搜索「知乎」,選擇Python分類

Github

新世界啊,有沒有。

同時,自己的項目可以分享出來,例如最大的同性交友網站 Github 、真實的網路問答社區 知乎 、 如果覺得不爽,還可以自己搭建一個博客 教你免費搭建個人博客 。

4、商業化協作

等到了這個階段,你已經找到了一份Python相關的工作。你需要更好的與同事配合,了解更多語言特性。

例如 有人曾經寫到 :

需要擴展Python語言的理由:

  1. 添加/額外的(非Python)功能,提供Python核心功能中沒有提供的部分,比如創建新的數據類型或者將Python嵌入到其它已經存在的應用程序中,則必須編譯。
  2. 性能瓶頸的效率提升, 解釋型語言一般比編譯型語言慢,想要提高性能,全部改寫成編譯型語言並不划算,好的做法是,先做性能測試,找出性能瓶頸部分,然後把瓶頸部分在擴展中實現,是一個比較簡單有效的做法。
  3. 保持專有源代碼的私密,腳本語言一個共同的缺陷是,都是執行的源代碼,保密性便沒有了。把一部分的代碼從Python轉到編譯語言就可以保持專有源代碼私密性。不容易被反向工程,對涉及到特殊演算法,加密方法,以及軟體安全時,這樣做就顯得很重要。

python擴展實現方法--python與c混和編程

這裡給出一個闖關網站:The Python Challenge , 非常好玩,大家可以再評論中給出答案

最後,我們看看Python的薪資情況

python工程師工資收入多少

Python酷不酷、你想不想學?

最近跟小夥伴建了Python交流群,若感興趣可以加一下微信:zaoshuio 。

更多精彩內容關注造數科技

最後留下一個小問題:

猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。

大家試試使用Python來解決這個數學問題,歡迎評論中交流


大家如果有對爬蟲感興趣的,不妨來看看我們的課程

Python爬蟲


零編程基礎,學起來雖然很難,但是只要方向對了,就不怕路遠。

設定目標

當你決定入門 Python 時,需要一個清晰且短期內可實現的目標,是通過學習找一份初級程序員工作,還是為了解決某個具體的問題,目標明確後,你需要了解實現它要具備那些條件,比如下面是拉勾上一份Python工程師的任職要求:

熟悉 Python 及常用的 Web 開發框架;
至少熟悉一種資料庫的使用,如MySQL、mongodb、redis等;
熟悉 Linux 操作系統及常用命令;
良好的編碼習慣和文檔編寫習慣;

做 Python 開發除了熟悉語言本身之外,還需要掌握很多相關聯的技能,好比打NBA,你不光要學如何投籃,還要練習力量、技戰術等一整套東西。所以,一個普通 Python Web 開發工程師需要掌握的技能包括至少一個Web框架,比如:Django、Flask、Tornado,做業務系統離不開資料庫的支撐,另外,還需要對Linux系統的基本操作和常用命令有所了解,因為以後你寫到程序基本上都會運行在Linux平台上。

接下來我從這幾個方面逐一介紹

Python3?

不少新手總是糾結是學 Python2 還是 Python3,就像手裡同時有包子和饅頭,不知道先吃哪個,這種糾結完全就是徒增煩惱,因為它們是同一種語言,只有少部分地方語法不兼容,儘管目前大部分公司還在用 Python2,但是 Python3 逐漸成為主流已是不爭事實,畢竟後者性能方面更佔有優勢,官方也在力推Python3。所以毫不猶豫地選擇 Python3 吧,最多花一天的時間能把 Python2 中特有的內容搞懂。

開發工具

工欲善其事必先利其器,做 Python 開發的 IDE(編輯器)層出不窮,我只推薦 Pycharm 和 Sublime,兩個工具的學習成本非常低,網上找一篇教程看了基本就能上手,Vim、Emacs 這樣的遠古神器還是放以後再去了解吧。另外,今後你所遇到的 90% 的問題都有可能通過Google和StackOverflow來解決。

學習資源

網上入門資源琳琅滿目,一本好書能為你指點迷津。快速了解 Python 可以看一下 Learn Python in Y minutes 這篇文章。但千萬不要被標題所迷惑,一門語言不可能幾分鐘就能學會,看完之後應該會對Python 有個初步的印象,照著示例操作完之後,你就要選擇一本合適入門的教程,《A Byte of Python》是一本值得推薦的書籍,來說說我推薦這本書的理由。

《A Byte of Python》的中文名叫《簡明 Python 教程》,這本書的最新版已經是第10版,基於 Python3.5,所以不擔心是否知識落後的問題,其次,這本書的厚度152頁非常適合入門,涵蓋了 Python 入門所有內容,相對那些五六百頁的大部頭書來說非常精簡了,2個星期能啃完。還有最重要的一點,這本書是免費的

這本書看完之後,你應該能設計出簡單程序出來。再推薦一本書《Python學習手冊》作為進階學習,內容相對要更深入,適合有一定編程基礎的人閱讀。

做Web開發,HTML、JS、CSS 是必須有所了解的,作為前端技能,不一定要深入了解,做到能寫基本的HTML代碼就夠了,此外,你還需要了解 HTTP 協議(推薦《圖解HTTP協議》)。目前比較主流的Web框架有 Django、Flask、Tornado,各自都有各自的特點,Django 文檔豐富、Flask 短小精悍、Tornado 非同步並發。這裡推薦使用 Flask,推薦書目《Flask Web開發:基於Python的Web應用開發實戰》

Linux 推薦《快樂的 Linux 命令行》,同樣是一本非常經典的入門迷你書,沒有太多理論,範圍也不太寬

MySQL只推薦一本《MySQL必知必會》,不到250頁的小冊子,實踐性很強,沒有什麼艱深晦澀的理論堆砌,看完這本書基本入門資料庫了

最後

只看書不會進步,思考和實踐才有成長,自學編程是一個比較枯燥的過程,如果沒有正向反饋,學習的積極性很容易被打壓下來,所以你應該積极參与到相關的技術圈子中去,嘗試去解答力所能及的新手問題,向圈子中的大牛們尋求幫助,善於總結自己所學到的東西,分享給更多的人,記住,你不是一個人在戰鬥。

這個是廣告:關注「Python之禪」公眾號,提升你的Python技術。


看到問題關於《編程零基礎應當如何開始學習 Python?》,其實是在Python未來會很火的一個基礎條件下,但是我覺得光光說學習Pyhon這件事,你首先得明白三件事:

——如何判斷你學習編程是合適的?

——如何選擇你的第一門編程語言?

——Python入行分析及就業分析

——Python基本的學習路徑和方法

——Python學習資源的推薦

本文是編程零基礎篇的第一篇《Python入行分析及就業分析》,更新於2017.07.25日17:00,後期會陸續更新學習方法和具體的執行步驟。

========================正文分割線==========================

2017年7月20日,IEEE Spectrum 發布了第四屆頂級編程語言交互排行榜。因為有各種不同語言的排行,所以 IEEE Spectrum 依據不同的變數對流行度進行了排行。據 IEEE Spectrum 介紹,他們的排行依據數據記者 Nick Diakopoulos 提供的數據,結合 10 個線上數據源的 12 個標準,對 48 種語言進行了排行。

Python 的排名從去年開始就藉助人工智慧持續上升,現在它已經成為了第一名。但排在前四名的語言 Python、C、Java 和 C++都擁有廣大的用戶群體,並且他們的用戶總量也十分相近。實際上,Diakopoulos 在對公司招聘所要求的基本語言分析中,C 語言的需求甚至還要在 Python 之前。

Python的火熱度持續不斷。。。。。。

你覺得Python真的好嗎?或許你在漫天的宣傳中看到了這些:

接近英語的簡單語法;
開發環境簡單,能打字就能寫代碼;
眾多的第三方庫;
解釋執行,不需要編譯;
跨平台,方便移植;

但是作為一個負責任的假程序媛,要跟你說的是:就算再簡單的語言,也得學才會會,不要在好不好,真的好不好這些事情上下功夫,要在怎麼學如何學上下功夫。

那麼,言歸正傳,我們來看看Python這個神奇的語言。

第一部分:各個領域應用的語言。

大家看這個內容,其實你很明顯發現,其實各個語言都有他的用處。我們可以說Python是應用最廣的。但是暫時還是不能說它是全能的,因為他也有它的短板,但是對於一般的小公司和小項目而言,是很難得的全能。

現在有個很奇怪的現象,就是大家把Python神話了。Python作為一門語言,確實有他的優勢。但是建議大家在學好這個語言的同時,要學第二門語言,這樣未來對大家有好的發展。

第二環節:Python工程師在企業裡面的定位是什麼?

四個重要的定位:驗證演算法、快速開發、測試運維、數據分析。

1、驗證演算法:就是對我們公司一些常見設計演算法或者公式的驗證,公式代碼化。

2、快速開發:這個大家應該都比較熟悉,快速開發,就是用成熟框架,更少的代碼來開發網站,Python在網站前後台有大量的成熟的框架,如django,flask,bottle,tornado,flask和django的使用較多,國內用Python開發的網站有:知乎、豆瓣、扇貝、騰訊、阿里巴巴;

3、測試運維:用python實現的測試工具及過程,包含伺服器端、客戶端、web、andriod、client端的自動化測試,自動化性能測試的執行、監控和分析,常用selenium appium等
框架。做運維同學應該清楚,在Linux運維工作中日常操作涵蓋了監控,部署,網路配置,日誌分析,安全檢測 等等許許多多的方面,無所不包。python可以寫很多的腳本,把「操作」這個行為做到極致。與此同時,python在伺服器管理工具上非常豐富,配置管理(saltstack) 批量執行( fabric, saltstack) 監控(Zenoss, nagios 插件) 虛擬化管理( python-libvirt) 進程管理 (supervisor) 雲計算(openstack) ...... 還有大部分系統C庫都有python綁定。

4、數據分析:Python有三大神器:numpy,scipy,matplotlib,其中numpy很多底層使用C語言實現的,所以速度很快,用它參加各種數學建模大賽,完全可以替代r語言和MATLAB。spark,Hadoop都開了Python的介面,所以使用Python做大數據的mapreduce也非常簡單,加上py對資料庫支持都很好,或者類似sqlalchemy的orm也非常強大好用。

在結束這個部分之前,大家有沒有一個疑問:為什麼爬蟲沒有中重點講?

其實這裡給大家重點說一下,如果你要學好Python,僅僅停留在爬蟲上,這個是很不靠譜的。Python 寫爬蟲的教程網上一抓一大把,據大家所知很多初學 Python 的人都是使用它編寫爬蟲程序。小到抓取一個小黃圖網站,大到一個互聯網公司的商業應用。通過 Python 入門爬蟲比較簡單易學,不需要在一開始掌握太多太基礎太底層的知識就可以很快上手,而且很快可以做出成果,非常適合小白一開始想做出點看得見的東西的成就感。

除了入門,爬蟲也被廣泛應用到一些需要數據的公司、平台和組織,通過抓取互聯網上的公開數據,來實現一些商業價值是非常常見的做法。

當然這些選手的爬蟲就要厲害的多了,需要處理包括路由、存儲、分散式計算等很多問題,與小白的抓黃圖小程序,複雜度差了很多倍。

第三部分:python的崗位,薪資,及技能要求

Python崗位有哪些呢?主要的崗位有這些:

Python全棧開發工程師(10k-20K)
Python運維開發工程師(15k-20K)
Python高級開發工程師(15k-30K)
Python大數據工程師(15K-30K)
Python機器學習工程師(15k-30K)
Python架構師(20k-40k)

目前應用最多的:全棧開發、數據分析、運維開發,大家知道他們分別的要求是什麼嗎?

我們來看三個崗位要求:

崗位1:任職要求
1.計算機、軟體相關專業本科或以上學歷,3年以上工作經驗;
2.熟悉python、JS開發語言;
3.具有MySQL資料庫設計與優化能力,熟悉mongoDB、mc、redis等一種以上;
4.熟悉Linux/Unix,能進行shell編程;
5.具有良好的學習能力,時間和流程意識,溝通能力、團隊合作

崗位定義:Python運維開發

崗位2:職位要求
1,熟悉 Python 編程;
2,熟悉 Linux 系統;
3,熟悉 shell 編程;
4,了解 django/web.py/flask 框架一種及以上;
5,有一定的 Web 後端開發經驗,熟悉前後端分離的開發模式
熟悉關係型資料庫的使用與基本設計優化方法,了解常見的 NoSQL 資料庫如MongoDB, Redis等;
6,良好的編碼風格及測試習慣
加分項:
在 GitHub 上有開源項目

崗位定義:Python全棧開發

崗位3:任職資格
1、具有python開發數據處理軟體的經驗;
2、精通Python,掌握numpy,scipy,matplotlib,pandas等數據處理方面常用的第三方python庫;
3、熟悉至少一種Sql資料庫 (mysql/ sqlserver/oracle);
4、熱愛編程、具有良好的代碼風格;
5、做事具有條理性,具有良好的自學能力、分析問題以及解決問題的能力。

崗位定義:Python數據分析

那麼,大家來看看,這三個崗位基本要求裡面,有哪些共性和不同?

第一層:python的基本語法和標準庫

既然你要會python開發,那麼語法基礎和庫是最基本的。

第二層:Linux基礎

全棧和運維涉及linux伺服器的操作,那需要shell編程和linux基礎操作的基礎能力。數據分析其實就沒有這一層,涉及是數據採集,也就是爬蟲。全棧對linux基礎要求少一些,而運維需要更多,還需要一些DNS/DHCP之類的,很多企業也需要一定的運維工作年限。

第三層:資料庫操作

資料庫操作:SQL、Nosql,數據的儲存和處理,就是常見的增刪改查。

第四層:web前端

前端的實現,包括web前端技能,了解或熟悉HTML、CSS、Javascript,Bootstrap,jq,nodejs。全棧就不說了,運維開發涉及到可視化的界面。

第五層:基礎python的框架和庫

基礎python的框架和庫做各種實現,需要開發一個網站或者做一個自動化運維監控,數據分析師基於一些可視化的庫和數據分析的庫。

第六層:演算法設計和求職準備

學一個技術和進階的核心是演算法設計,最重要的是:求職

最後一個部分:說說薪資和城市

全國python就業形勢分析:招聘待遇,工資20000-29999佔比最多,達40%。經驗要求,3-5年工作經驗要求的佔比最多,達71%;學歷要求,本科學歷要求的佔比最多,達76%。該數據僅供參考

python工資按工作經驗統計,其中0-2年工資¥13060,應屆畢業生工資¥4210,3-5年工資¥15220,6-7年工資¥23860,8-10年工資¥25220,10年以上工資¥14170,該數據僅供參考。

以上就是關於Python職業需求,薪資崗位以及常見職位的一個分析,歡迎大家留言和討論。


順便推薦兩部美劇吧,累了看看,可以提高信心和興趣,但是不要過度沉迷喲

  1. 矽谷黑歷史,講現代程序員創業的故事,很有意思,梗很多。
  2. 奔騰年代,我個人超級喜歡,一開始覺得是上世紀70-80年代的關於早期個人電腦發展的美劇,本來興趣一般,但是看完第一季之後,發現這部美劇真是太棒了。劇中所講述不就是現代互聯網浪潮的早期版,時代的洪流推動著機遇來臨時,你是否能把握,是默默無聞還是粉身碎骨亦或功成名就。我們現在所處的,不正是另一個奔騰年代么!

----------------- 以上是2017-09-05更新 ---------------

先上個圖,我的壁紙,Doctor Strange電影里說的:

接觸編程前後7年,入行3年,用了兩年Python,最近重新回顧了一遍,重新補了補演算法,原因你們懂的~

純粹來分享下經驗。

我不算0基礎,不過也差不多了,專業是計算機,但是上學的時候遊手好閒,畢業之後窮遊了一年,又做了一年SEO,之後自學了PHP入行,入行2個月就扔了PHP轉到Python方向(工作需要,但是我很慶幸~)

下面分享一下我總結的0基礎Python上手,我智商有限,深深覺得自己腦子運轉不夠快,所以我更側重方法論,抽象化來彌補我低下的智商 。 :P

以下前提是,每天你都有4個小時以上學習Python的時間。

BTW,我很啰嗦,純文字,沒有Macdown,我就不會排版了。

So,有興趣就看一看,沒興趣就Pass掉,能幫助一個未來的程序員少走一點彎路就值了。

--------------------------手動切片---------------------

首先先推薦三本書:

1.程序員的數學I(三部曲第一本,基礎數學)

2.SICP (計算機程序的構造和解析)

3.Python Cookbook(Python3版本)

第一本書:程序員的數學I

0基礎先不要著急看Py編程書,先回顧回顧基礎數學,這本書是一個日本程序員(經知友提醒,平岡合幸寫的是後兩本,第一部是結城浩寫的)寫的,

非常通俗易懂,也沒有什麼高深的數學知識,第一部裡面幾章都很重要,進位轉換,邏輯運算,排列組合,數學歸納法,遞歸。

先從數學的角度理解這些概念,至少就不會被一開始就勸退。

我有個同事是做業務的,他學習編程的時候,在進位轉換上卡了很久(幾乎所有的書一開始就講,但是因為不算重點,篇幅都不多),嚴重打擊了我同事的積極性,所以先花3到4個小時回顧一下基礎數學很重要。

所以先看程序員的數學第一部,注意只是第一部。大概只用3到5個小時就可以看完。

第二本書:SICP

這本書很出名,有多種語言版本,建議看原版或Python版本的。

現在你只需要讀

前兩章!前兩章!前兩章!

一口氣讀完兩章也就4個小時,可能裡面會有大量難以理解的地方,先不要管,先過一遍,然後第二次讀的細一點,花個4~5天應該能看個7788。

如果讀第一遍的時候非常吃力,可以先去看看你所讀語言的基本語法。

我看scheme版本的時候,也就是在網上找了篇scheme入門博文,基本賦值,分支循環,定義函數等基本的規則,大概也就是30分鐘的內容,基本數據結構什麼的SICP裡面介紹的還是挺詳細。

看SICP可以多花點時間,這本書的特點是把計算機語言的概念精巧的抽象了出來。

讀這本書可以在你的思維里先打好計算機語言的運作的抽象化基礎,為你入門之後的思維轉換做了很重要的鋪墊。

第三本數:Python Cookbook(py3.0版)

其實這本書我沒讀多少,挑了幾章為了摳一摳概念,但是可以感覺到這本書真心很不錯。

建議通讀,盡量按順序讀,當然,這本書可以跳著看,它有的時候可以當做字典用。可以看完前幾章基礎的,然後看你喜歡的,畢竟維持興趣很重要。

在這個階段,你可以開始你寫一些小項目,小爬蟲,批處理小工具等等,記住,一定要敲代碼,千萬不要複製粘貼,哪怕是照著敲。

如果是寫爬蟲,可以順便學習一下網路基礎,找幾篇博文,看看互聯網是怎麼運作的(建議看阮一峰的幾篇關於互聯網協議的博文),學習一下互聯網協議。

當然,可以先不用深入了解,但是一定要對整體有一個概念,這很重要,「整體」這個概念在大量累計後會有質的飛躍,這個一會兒再說。

如果是寫小工具什麼的,可以看一下「Python絕技:運用Python成為頂級黑客」,雖然我看這本書的時候已經很熟悉Python了,所以這本書本身並沒有對我本身的編程水平有多大提高,但是裡面有很多小例子可以拿來練手。

這個階段一定是勤學加苦練,看要多看,同時也要多練,我覺得一天起碼要寫1000行左右的代碼吧(可以照著寫哦)。

一定要把你學到東西運用起來,知道編程是有價值的,會大大提升信心。

還是那個學編程的同事,他學習的契機是,我花了10行代碼給他寫了個從txt中讀取文件名,從指定盤裡把業務需要的PDF文件複製到桌面。非常小的工具,但是為他的工作效率帶來了巨大的提升。(每天節省了半個小時找文件的時間,之前是用windows自帶搜索一個一個的找文件,想想就好恐怖,我這種懶人一定幹不了!)

促使他覺得編程很牛掰,所以非要學編程。我自己之前都沒有意識到編程可以如此輕鬆的為我們的工作和生活帶來巨大的改變。

所以,信心和興趣很重要,特別是看第三本書的階段。

因為你會困惑,會碰到很難理解的東西,會卡住,不知道看的這些東西怎麼去用,為什麼這麼用。

所以,請你依靠信心和興趣衝過這個瓶頸,當你能讀通這本書的60%(是讀通,不是完全理解),累積了5W行左右的代碼,你就快要突破這個瓶頸了。

這麼說很奇怪,有點像修真或是參禪,(雖然我沒看過什麼修真小說 :P)

你要頓悟了!

要頓悟了!

頓悟了!

是的,就是頓悟,量的累計產生質的飛躍。

這種感覺就是,你好像可以脫離照抄模式,當你想寫一個什麼小工具,小爬蟲的時候,你感覺你心裡有個譜子,或者說大綱。你會用到什麼庫,會寫分出那幾個模塊,會先寫什麼再寫什麼。

在高強度的抄寫代碼和理解這些代碼的過程中,突然你覺得這一切突然輕鬆了不少,你可以更快的理解代碼,更快的想到應該怎麼寫這些代碼。

恭喜你,按上面的時間粗略算下來,你大概用了一個月或者更少的時間,學會了我花了一年才學會的東西。

這時候你可以重新看看SICP前三章(如果你先看的Scheme版,可以再找個Python版對照對照,會有新發現哦~)。去github上找點源碼看看,推薦KennethReitz的,研究Linux或者Vim緩解緩解一直看編程語言的腦子(千萬不要太沉迷)。用輕鬆一點的狀態多看看你想看的,這個階段你作為一個python程序員,已經可以參加工作咯 :)

--------------------------手動切片---------------------

你已經經歷了第一階段,第二階段就和工作很相關了,一個程序員可不知要會編程語言,還有一些基本素質。

如果你已經工作了,你的公司技術團隊比較正規,會開始要求你一些規則,這些很重要,也是你接下來要學的。

1. Python編碼風格

也就是所謂的pep8,在網上隨便查一下,讀一遍,用不了半個小時。

這個是重在堅持的過程,養成自己強迫症的習慣。

2. 測試

Python是動態語言,在代碼運行到錯誤的地方之前是不會給你報錯信息的,所以一定要學會寫測試。單元測試和功能測試看似無聊,但是當你碰到莫名其妙的bug無法找到,人工肉眼掃日誌,或者其他令人崩潰的情況時,你可能更希望提前對每一個功能寫幾個簡單的單元測試。

測試通過不代表程序沒有bug,但是沒通過代表程序一定有bug。

當你測試覆蓋率幾乎100%的時候,每次修改代碼,增加功能後,執行一次,幾分鐘後通過,你會獲得非常爽的感覺,類似賭博賭贏了(23333)。而且你會對自己的程序充滿信心,雖然還是可能有bug。

推薦一本書:Python Web開發 測試驅動方法

3. 技術方向

現在你該選擇技術方向了,雖然你寫了很多雜七雜八的小項目,但是要找一條你可以專下去的方向,至少在這個方向專研個半年,再考慮試試其他方向。但做選擇的時候一定要選你當前最看好的方向,時間寶貴。

只有技術廣度沒有技術深度,除非你有本事直接去做技術高管,否則拖的越久,就浪費越多的時間。(這是我現在很後悔的一點,浪費了一年時間,後來覺得自己這一年其實啥都沒學會,過早負責項目,過早接觸架構設計,反而讓自己底子變薄弱了。)

Python有幾個大方向:

a)爬蟲(個人覺得不適合長遠發展);

b)系統級(建議DevOps方向,分散式方向);

c)Web開發(國內北京現在剛剛有起色,還在發展初期,建議學Flask和Django);

d)大數據和機器學習(這個單獨拉出來說)

關於大數據和機器學習方向,很多人其實覺得自己做不了,感覺自己智商不夠,或者底子不好,或者不是名校博士碩士畢業之類的。

這些朋友們,請你們明確自己的定位,你們或許做不了領域前沿的開荒者,但完全可以勝任一個運用者的職位。

現在國內其實很多小公司也擁有大量的數據,可能是幾百G,可能是幾個T。

這在很多研究大數據的科學家眼裡這東西太小兒科,因為這種級別的數據已經有很現成的解決方案了,但是非領域內的人並不熟悉這些解決方案,你要做的,就是將這些現成的解決方案實際運用起來,很務實的工作,但現在非常吃香。

大數據只是個概念,數據量大到常規數據處理辦法來解決效率十分低下的時候,就算進入大數據領域了,你只是換個目前非常規的處理辦法而已。大數據沒有什麼可怕的,信心很重要哦。

而且因為物聯網蓬勃發展,所謂大數據的處理方法,很快就會變成常規處理數據的方法哦~

機器學習也是同理,有很多現成的解決方案。搜索優化,智能推薦,圖像識別等都已經有非常完善的實現體系,你只要負責將別人的理論實現成代碼就好。

我現在做得就是這種,我專科畢業生哦 :)

這個階段推薦的基礎書單是:

a)程序員的數學三部曲

b)Python演算法教程(Magnus Lie Hetland)

方向選看:

a)大型網站技術架構(李智慧)

b)用Python寫網路爬蟲(沒什麼深度的東西,但可以從0實現一個小爬蟲框架,裡面的思維大於技術)

c)Python數據分析與挖掘實戰(也沒啥太多高級技巧,但是可以快速了解你會用到的工具)

d)開源書The Hitchhiker『s Guide to Python(很有用,算是進階知識補充吧)

e)程序員的思維修鍊(對我幫助挺大,這種給人感覺好像成功學或雞湯一樣的書,你信了,堅持做了,對你有幫助。如果不信,那沒必要看的)

f)Go語言實戰 WilliamBrainErik(學一門靜態語言吧)

再進階,就不需要找別人問了,你一定已經有自己的方法了。

--------------------------手動切片---------------------

簡單說幾個程序員需要的特質,越早培養越好。

1. 求知慾

前面提了很多遍的興趣也算一種求知慾,有求知慾就有目標,有目標就有動力。

2. 自信心

哪怕是盲目的自信,在前期學習階段非常重要。要相信相信的力量,信念是一種很強大的助力。

3. 多思考

勤思考很重要,多想想為什麼和怎麼會,積累了一定的思想,就把上面的盲目去掉吧 :P

4. 責任心

自己的工作,自己的項目,自己的代碼,一定要自己負責。寫代碼一定不要只看代碼,寫完了丟給測試人員不管了。

(有的時候寫完代碼,自己過一下,看看自己寫出來的是什麼樣子、流程通不通,這很重要。你可能會發現一些很明顯的功能上錯誤,或者設計上的問題,或者只是馬虎。代碼可以運行,不代表這堆代碼真的實現了業務需求。我是因為一個項目被上級罵了1個月才理解到的,你不信可以試一下P挨罵)

5. 懶

可能會和上面的一些衝突,這裡的懶是指簡化,重複的事情讓機器做,這也是機器被發明出來最重要的功能之一。

在完成目標的前提下,要有一個偷懶的心。

懶才是社會的第一生產力。

關於讀書:

看書的建議是盡量一口氣看完,看書時間盡量集中起來,盡量不要每天看一小時某一本書,然後就去看別的。對於我,絕大多數技術類非字典的書都在4個小時左右讀完,現有一個整體概念再去看細節,多輕讀幾遍,很多時候要比一句話一句話的摳要來的實在。這當然不是針對所有人,只是適合部分人的方法論。至少對於我,買書如山倒,讀書如抽絲。如果不一口氣抽完,斷斷續續的,永遠看不完。所以,在有興趣或目標的時候,一口氣先看完了再說,哪怕不會看第二遍,也總比一遍都看不完強。

關於IDE:

我現在用的VS Code - Vim模式,偶爾用用emacs,還是Vim模式~

Python最好的IDE應該是J家的PyCharm,這應該是公認的了吧。

一開始學習,推薦SublimeText、VS Code、Komodo,後期做項目學一下PyCharm很不錯(但要花費一定的學習成本)

注意,學編程的第一年,千萬千萬不要沉迷Vim和Emacs,知道基礎操作就好,不要玩什麼配置。vim和emacs作為一種復古的愛好就好,為了愛好花點時間值得,但是作為IDE,現代編輯器方便易用拓展性強,真不推薦一開始在IDE上花費太多時間,想想我一開始在Vim上花費了一年,又在Emacs上花費了一年半,多學點編程技巧或者框架和工具多好呀

--------------------------手動切片---------------------

碼不動了,一個小時碼了這些,腦袋都迷糊了,也不知道邏輯清晰不清晰,巴拉巴拉,應該寫成博客才對,哈哈。這麼多字,應該沒人看。。。

最後還是那句話:勤學,苦練,年復一年,日復一日。


Udacity有一門課,cs101 "how to build a search engine"。總共7堂課,一天聽一堂,一周就可以用python寫出一個搜索引擎來。
不需要任何編程基礎。


再放出乾貨之前,我們普及一下編程語言的基礎知識。用任何編程語言來開發程序,都是為了讓計算機幹活,比如下載一個MP3,編寫一個文檔等等,而計算機幹活的CPU只認識機器指令,所以,儘管不同的編程語言差異極大,最後都得「翻譯」成CPU可以執行的機器指令。而不同的編程語言,干同一個活,編寫的代碼量,差距也很大。

比如,完成同一個任務,C語言要寫1000行代碼,Java只需要寫100行,而Python可能只要20行。

所以學習Python初期不太容易碰壁,Python語言是非常簡單易用的,容易學。並且Python還是人工智慧首選的編程語言,未來有可能有一天會爆發。

所以希望我整理的這要Python學習路線圖可以幫助大家!

一、Python入門

這一階段,你需要學習的知識點:

如果學習能力還不錯的話,這一階段,只需要一個多月的時間

Python視頻教程:

1、重磅級教程推薦,講的非常好

Python入門教程完整版(懂中文就能學會):http://pan.baidu.com/s/1miwZ1WW

2、Python基礎教程:http://pan.baidu.com/s/1kUZpbOb

二、知識運用

利用上述課程中的知識搭建簡單的Web服務。熟悉Scrapy各模塊。熟悉Django各模塊的使用

1、Scrapy視頻教程:http://pan.baidu.com/s/1dF3qhFV

教程簡介:

(1)Scrapy的簡介。

主要知識點:Scrapy的架構和運作流程。

(2)搭建開發環境:

主要知識點:Windows及Linux環境下Scrapy的安裝。

(3)Scrapy Shell以及Scrapy Selectors的使用。

(4)使用Scrapy完成網站信息的爬取。

主要知識點:創建Scrapy項目(scrapy startproject)、定義提取的結構化數據(Item)、編寫爬取網站的 Spider 並提取出結構化數據(Item)、編寫 Item Pipelines 來存儲提取到的Item(即結構化數據)。

2、Django教程:http://pan.baidu.com/s/1nvFlfU5

教程簡介:

(1)Django的簡介。

主要知識點:MVC設計模式以及Django的MVT。

(2)搭建開發環境:

主要知識點:Linux的虛擬環境搭建和應用、Django的安裝。

(3)利用Django框架完成簡單的圖書項目:

主要知識點:編寫模型,使用API與資料庫交互、使用Django的後台管理管理數據、通過視圖接收請求,通過模型獲

3、Python全棧教程:http://pan.baidu.com/s/1nvFlfU5

教程簡介:

(1)HTTP協議的分析:

HTTP格式。

包含知識點:HTTP GET請求的格式、HTTP POST請求的格式、HTTP響應的格式。

(2)HTTP協議的使用(實現Web靜態伺服器):

利用HTTP協議實現Web靜態伺服器。

包含知識點:瀏覽器首先向伺服器發送HTTP請求、伺服器向瀏覽器返回HTTP響應、使用類。

(3)伺服器動態資源請求(實現Web動態伺服器):

利用WSGI實現Web動態伺服器。

包含知識點:瀏覽器請求動態頁面的過程介紹、WSGI的介紹、定義WSGI介面。


Learn Python The Hard Way

這是一本在線的書,簡直就是給0基礎的初學者量身定做的,從頭開始一步一步跟著做吧。(我覺得Python簡明教程比較舊了,這個很新)

英文版:http://learnpythonthehardway.org/
中文版:笨辦法學 Python (Learn Python The Hard Way)

此外有建議若干:

  1. 最好選個好用一點的Linux發行版,能省很多事。
  2. 你為什麼選擇Python?我自己回答:1 因為簡單 2 因為拓展包多。由於第二點原因,建議一開始就熟悉一下使用easy_install pip什麼的,請google一下 ez_setup.py。
  3. 編輯器IDE :如果你在Windows上裝好Python就有IDLE可以用了,此外強烈建議vim、emacs選一個學吧,gedit、sublime text什麼的也好用的很,編輯器可以算一個獨立的問題了,所以這裡就不多說!其他編輯器跟IDE可以以後再說…。
  4. PyCon 的視頻,很精彩,去看吧!
  5. 在Google+上關注一下Guido大神也是個不錯的選擇。
  6. 知乎、啄木鳥社區、StackOverFlow、python-cn郵件列表、等等等等好地方,去看吧!
  7. Learning Python 這本書是講Python本身的,包括它的各種語法,這本書是為數不多講Python3的,Core Python Programming個人感覺比較舊了,Python Cookbook是各種實戰技巧,Programming Python 這本書兩冊,很厚,基本講的是標準庫,個人覺得可以忽略,直接看Python 的文檔即可,Python in a Nutshell,可當工具書,Python簡明教程 用來入門的確不錯,Python 源碼剖析 這本書分析的源碼比較舊了,但是許多機制還是一樣的,可以準備以後一讀。
  8. Python Challenge,一個編程遊戲,去玩吧。The Python Challenge
  9. 既然對編程沒有任何基礎,那先學一點C我覺得也是應該的。Learn C The Hard Way Learn C The Hard Way 還有這個:Linux C編程一站式學習 http://learn.akae.cn/media/index.html,不是說必須得學C,但是學了會讓你理解很多東西,絕對有益。

謝邀。

我做過一年Python虛擬機的優化和定製工作,自學,研究三年,曾不自量力,試圖為CPython添加JIT實現。現在已經棄坑,希望未來當智能硬體發展起來以後,會有更多的人選擇使用Python進行開發,我可能會再回來。

回到這個問題。我覺得題目太籠統了。Python不像Java,Java現在就是主攻Web技術棧,高性能,高穩定性,高擴展性的服務端。學習路線反倒清晰。但是Python嘛,這個語言太全面了,什麼都能做,關鍵還都做得不錯,要想學習Python,首先,你得自己搞清楚,自己要拿Python做什麼。

舉幾個例子吧,Python用於科學計算,有numpy, scipy可以用。當年讀研的時候沒能早點用Python是我一生的遺憾。

如果你想做web,那麼flask, django各種666,絕對會讓你欲罷不能。

如果你想做game,那更不用說,python這種動態語言不要太適合。5年前,我曾經研究過一款名為Panda3D的遊戲引擎,它就是用python做的,而且做了很多擴展,這麼多年過去了,我不知道遊戲引擎現在發展的怎麼樣了。但據我所知,國內的第二大遊戲廠商,網易就有大量的遊戲是基於Python開發的。

如果你想做爬蟲,github上一搜一大把。

這個列表還能列很長。

所以,Python怎麼學,我實在是不能給出多少有用的建議。但是,我今天倒是想說一下,Python不應該怎麼學。我看了好多答案,一個一個的反對點下來,點得我手都疼了。

很多答主,講什麼要去看很高深的編程理論的書(比如有人推薦了SICP),還有的建議掌握Python位元組碼以及虛擬機。

我想說的是,千萬千萬不要這麼干。Python的哲學就是簡單易用,語法清晰明了。你會定義函數,會定義類,會寫while, for,會寫if else,知道list, tuple, dict 就可以了。馬上動手去做你自己喜歡的事情。什麼列表推導,lambda表達式,yield, 閉包,decorator 都不要去管它,在後面慢慢學。

初學者的話,推薦的書是《Python核心編程》

然後再配一本《Python cookbook》,沒事常翻翻,對初學者會很有好處,可以快速掌握python的各種小技巧,讓你的程序快一點pythonic。

python這個語言特別特別好,對新手非常友好。你的代碼即使不那麼pythonic,也不會造成什麼惡劣的影響。而且後面重構起來也快。如果說唯一不好的地方,也許就是所有的弱類型動態語言,都缺少一個很好用的IDE,這倒是真的。

最後,Python之父鎮樓


1,找到合適的入門書籍,大致讀一次,循環啊判斷啊,常用類啊,搞懂(太難的跳過)

2,做些簡單習題,字元串比較,讀取日期之類 Python Cookbook不錯(太難太無趣的,再次跳過,保持興趣是最重要的,不會的以後可以再學)

3,加入Python討論群,態度友好笑眯眯(很重要,這樣高手才會耐心糾正你錯誤常識)。很多小問題,糾結許久,對方一句話點播思路,真的節約你很多時間。耐心指教我的好人,超級超級多謝。

4,解決自己電腦問題。比如下載美劇,零散下載了2,4,5,8集,而美劇共12集,怎樣找出漏下的那幾集?然後問題分解,1讀取全部下載文件名,2提取集的數字,3數字排序和(1--12)對比,找出漏下的。

5,時刻記住目的,不是為了當程序員,是為了解決問題。比如,想偷懶抓網頁內容,用urllib不行,用request也不行,才發現抓取內容涉及那麼多方面(cookie,header,SSL,url,javascript等等),當然可以聽人家勸,回去好好讀書,從頭讀。

或者,不求效率,只求解決,用ie打開網頁再另存為行不行?ie已經渲染過全部結果了。

問題變成:1--打開指定的10個網頁(一行代碼就行)。更複雜的想保存呢?利用已經存在的包,比如PAM30(我的是Python3),直接打開ie,用函數outHTML另存為文本,再用搜索函數(str搜索也行,re正則也行)找到數據。簡單吧?而且代碼超級短。

6,保持興趣,用最簡單的方式解決問題,什麼底層驅動,各種交換,留給大牛去寫吧。我們利用已經有的包完成。

7,耐心讀文檔,並且練習快速讀文檔。拿到新包,找到自己所需要的函數,是需要快速讀一次的。這個不難,讀函數名,大概能猜到是幹嘛的,然後看看返回值,能判斷是不是自己需要的。

8,寫幫助文件和學習筆記,並發布共享。教別人的時候,其實你已經自己再次思考一次了。

我覺得學程序就像學英文,把高頻率的詞(循環,判斷,常用包,常用函數)搞懂,就能拼裝成自己想要的軟體。

最後:

自己多問下為什麼學python

如果一門語言沒有改變你的編程思維,那麼它不值得你去學習」。如果這麼說,我們大學的時候,學習了c,c++,java,C#,算是值得學習么?很多時候是不值得,我覺得我們大學的課程就是用java,c#,c++把"C程序設計"又上了一遍.

這是因為,學校的老師會C和java之類的,所以要跟著規矩開這門課,(這也就是為什麼,許多學校還在教vb,),這也就是為什麼,你所以為的一樣就是大家都有For都有while,都有switch..都有Class...都有int 都有float,所謂的不一樣就是用C有指針,java沒有,這就是為什麼教育是失敗的,這也就是為什麼,我目前認識的幾個編程大牛

python的優點:簡單 我所說的簡單,是相比於象C和C++這樣的語言,你為了編程,要學習許多偏底層的東西.在比如,你在學習一個新的編程範式,或者想要馬上做個例子看看,試驗某個API,如果你是寫java的,你不得不去寫一個main,寫一些構造,即使有IDE這樣的東西,能夠為你帶來代碼生成器,而我做得就是寫一段「腳本」,或者打開python互動式解釋器就行了。

自己認識的python朋友出去工作,工資比較高,然後自己又剛剛好是會python所以選擇學習python,這樣的人比較危險但是也比較有激勵,還有就是覺得python比其他開發語言好用。


學完python前景會咋樣

其實我個人是很看好python未來的就業前景的,因為我認識太多的工程師都已經在學python,很多都是月收入大幾萬的

我個人也並非一直用python。前些年主要用c/c++以及java開發一些通信,移動系統,互聯網通信。近3年開始才轉向python。坦白的說,這可能與你相處的公司以及環境不大一樣。隨便舉個例子,google的protocol buffer協議一出來就具有c++/python/java三種語言支持。google的廣告系統早在03,04年左右就一併對python進行了webservice支持,大部分涉及基礎核心系統的公司,都開始對python進行了擴展支持。甚至開源社區的postgresql資料庫,除了自身的ansi SQL,pgsql,pg/TCL,PG/PERL之外對python進行了內嵌支持,唯獨卻沒有呼聲很高的java。在FREEBSD(MIT)/LINUX(GPL)平台上,對java可能排斥性比較大,但綜合而言,目前python發展還沒有java那種普及,主要是python大部分工作仍然是在較為深入地系統層和框架層做設計開發,例如django,SQLAlchemy,fail2ban,mail郵件系統,twisted等等。這部分對於那種習慣應用前輩們框架的編碼人員而言,缺乏創造力的他們根本無法適用這種開發。尤其在python涉及一些系統層面需要有較強的c/c++能力,這部分人在國內要麼就累得要死沒時間,要麼就啥都不會就會拷貝代碼,而國內公司也鮮有主動去做這部分基礎勞動的,大多都是等別人做好了在直接拿來用,所以造就了任何技術性的東西出來,國內都是先等等看,然後抄襲應用。

大環境如此,但千萬誤認為先等等看吧。對於一個技術人員而言,缺乏對新技術的渴望與熱情,這是一種非常危險的事情。我工作8年了,按照國內很多的人的說法早已不做代碼了,但又一次在聽一個老外的演講,他說他50多歲仍然每天堅持寫代碼,了解最新的動態,所以他才能做到他們公司的首席科學家,因此它才能時刻指導項目團隊前進並保證項目的質量。他坦言對於一個不寫代碼並且不了解最新的技術動態的技術人員或者技術團隊的負責人而言,這種團隊也就足夠做作小項目,一旦壓力和項目過大,就會有很多問題漏出來。

對於新人而言,無論學習什麼技術,都要以鼓勵的姿態出現。太多用薪水和你個人所看到的現狀去衡量一門技術,那絕對是欠缺眼光的。任何一門技術,一旦有人學習,他有可能逐漸成為這個領域的專家,即便再濫再沒有人用的開發語言技術,他也有可能就是明日的奠基者或者大師。


自己如何確定目標

在生活中學會不斷挖掘自己的潛力。我們都是一個普通人,可能並不清楚自己到底在哪方面佔有優勢。所以,學著在生活中找到自己的優勢,並根據優勢選擇一定的就業方向。

不隨波逐流。不要看周圍的人做什麼,自己就做什麼,也許別人做的並不適合你。別人的優勢很可能會成為你的劣勢。所以,堅定自己的想法,讓自己知道那些方面適合自己,自己可以勝任。

不斷嘗試可能成為自己的優勢。你不知道什麼適合自己,所以才要大膽、勇敢地嘗試。找到一種可以屬於你的獨特的優勢。

堅定信念。一旦你堅定了自己的信念,就不要被別人的意見或是諷刺或是嘲笑所干擾。別人不是你,不懂的你在想什麼,不清楚你開始這件事的源頭。你的事情,不了解你的人,沒有資格輕易評說。

不茫然,不多想。別讓太多的事干擾到你奮鬥下去的信念。夢想不容許太多的雜念。那些雜念只會讓你的心愈來愈脆弱,多為一個人考慮,到頭來,傷害的還是自己。


選擇自己學習方法

每個人都有適合自己的方法,有的人去選擇自學,有的人選擇看視頻學習,有的人選擇報名培訓班,那在這個時候,你就要自己考慮清楚,到底那樣對的幫助是最大的,個人覺得是跟著培訓班最好的,畢竟人家的實戰項目多,我們學軟體開發的都知道實戰項目對於學好一門語言是 很重要的。


學習python有那些誤區


具體裡面的誤區非常的多,那些就不需要我去寫出來,我給你說的一般都是心態的問題,首先一個覺得自己會java和c++,然後我學習python就很牛,但是你要知道語言是有很多相同的地方,但是不是通用,一定要自己學習的仔細。還有一種就是覺得我不會英語,我要先去把英語學習好在來學python。因為自己想還壞主意然後學習,這樣的都是容易找進誤區的。


怎麼樣才能學好python

學好python你需要一個良好的環境,一個優質的開發交流群,群里都是那種相互幫助的人才是可以的,我有建立一個python學習交流群,在群里我們相互幫助,相互關心,相互分享內容,這樣出問題幫助你的人就比較多,群號是304加上050最後799,這樣就可以找到大神聚合的群,如果你只願意別人幫助你,不願意分享或者幫助別人,那就請不要加了,你把你會的告訴別人這是一種分享。


感覺寫的好,對你有幫助,就點個讚唄,別光只收藏哈.~( ̄▽ ̄)~


?


看到知乎的高分推薦,總是讓我很發愁。為什麼說的都很片面,但看起來又很好呢?從170段長篇大論中摘取有效的信息,簡直是費死勁的工作。

我想試試從回答中摘取我很贊同的內容,同時保持內容的簡潔。

————來源:知乎。作者:TheAnswer——————

由淺入深,建議按照先後順序閱讀學習。

0.Python簡明教程

分分鐘學會一門語言之Python篇

1.Python 開發教程

地址:Python教程 - 廖雪峰的官方網站

—————

評價:精簡則無過,雜則亂。Python入門一本書加上網上的簡明教程足矣。

書籍選O`Reilly的精品書籍即可,入門的別太厚的。

————————————————————————

————來源:知乎。作者:昔九——————

我推薦一個叫codecademy的網站。它很適合零基礎且學一點就想要得到鼓勵的朋友。

Python | Codecademy

————

評價:在線做題是一種極其有遊戲感的學習方法,一旦做出幾道題以後,那種成就感和快感會讓你欲罷不能。本人再推薦一個網站,需要科學上網訪問:

CheckiO

——————————————————————

Python不僅是用來做網站,也不僅是用來做工具的,也不僅能用來開發遊戲伺服器,也不僅能用來開發遊戲客戶端。

Python的學習方法,以上兩段,足矣。

各位答主別總想著自己上牆,避免知識泛濫也是我們的責任嘛。(順便拉黑阿里巴巴雲棲社區的回答)


IDLE + 一本好書

Fluent Python

Python Playground

Introducing Python: Modern Computing in Simple Packages


我也算學習和使用 Python 已經半年多了。 最近在公眾號寫了一篇總結。分享給大家。

從一開始著手學習 Python 到現在已經半年了。不敢說自己已經駕馭的多熟練,但講真 Python 確實是一門低門檻的語言。

關注公號比較早的讀者應該很了解我,這個公號裡面大部分都是實戰的項目,從WebHubBot 到 NCMbot ,以及小程序的後台,統統都是 Python 來實現的。那麼回到主題,我們到底如何自學 Python 呢?

其實 Python 非常適合初學者上手,相比較於其他主流編程語言,它有更好的可讀性。以及非常豐富的第三方組件庫,我們幾乎不用再做「重複造輪子」的工作。其次,開發環境也是極其易配。

很多讀者,以及我的圈內好友在看到我一直在學習 Python 的時候,都會問我一個問題,「我該如何學習 Python?」。通常情況下,我都會回答,讓他們去學習 廖雪峰老師整理的教程。

因為我完全就是通過網上資源自學 Python 的。一下午時間瀏覽完廖雪峰 Python 教程的基礎篇。之後就開始上手項目,同時一步步再補充其他知識點。

結合這半年的學習,我個人整理了主要的幾個經驗:

1、很多老司機都推薦新人找一本書來看,當然,如果你有充足的時間,那麼就找一本淺顯易懂的書,從頭到尾看下去,同時把所有的例子都動手跑一邊。但你覺得自己的時間並不多,想快速掌握這門語言,那麼我極力推薦廖雪峰的Python 教程。因為我確實是從這個教程裡面學到了很多,不懂得地方再查資料去補充。

2、找一個實際的項目去練手。我當時是因為要寫一個爬蟲項目,爬取 Instagram 的圖片,如果選擇用 Java 的話就太笨重了。因此不得以我就選擇了學習 Python。在這種條件下的效果比你平時學一門語言的效果要好很多。所以,最好的狀態就是去做一個實際的項目。比如去搭建一個自己的博客網站。

3、找到一個已經會 Python 的司機。讓他給你指出一條路子,同時在遇到卡殼的地方就找他指點。這樣將會事半功倍,當然別人的時間也是有限的,所以當你遇到問題的時候,第一步應該是去搜索查找問題。

當然,別人的經驗未必就適用於你自己。雖然上面我說過只花了一下午的時間就掌握了 Python 的基礎知識,那是因為我已經掌握了其他的開發語言如 Java、JS等等的。

對於一個完全沒有編程經驗的初學者,在學習 Python 的時候,面對的不僅僅是 Python 這門語言,還需要面臨編程屆的一些普遍問題,比如:

1、從零開始,根本不知道從何入手,書籍看到第二章就看不懂了

2、遇到問題不知道如何尋找解決方案

3、缺少計算機基礎知識,被一些教程中略過的「常識性」問題卡住

4、看懂了語法之後不知道拿來做什麼,學完一陣子就忘了

5、缺少數據結構、設計模式等等的編程基礎知識

所以除了之前說過的那三點經驗,給初學編程者的額外建議:

1、切勿浮躁,自信是成功的開始,雖然你已經看了很長時間的資料,但還是不能把程序跑起來。但相信我,幾乎所有程序員一開始都是這樣的狀態,也都是一步步折騰過來的。

2、選擇合適的教程。有些書籍是很經典,但未必就適合你。

3、多動手。不要只顧著看教程,一定要親自動手讓這些程序在自己電腦跑起來。

4、額外的知識,如英語、計算機基礎知識

5、要學會看別人代碼。這裡推薦多使用 Github。之前我也整理過一系列的 Github 教程。Github系列教程一 「開門」Github系列教程二 「加入Github」Github系列教程三 「上手Git」

6、學會查看官方文檔

那麼、

為什麼一直以來我都極力推薦每一個開發者都要學會使用 Python。是因為這門語言真的很簡單,我所說的簡單是相比較於 C 和 C++ 這樣的語言你需要學習很多底層的知識。

有的人學習 Python 是覺得工資高,其實這樣的人比較危險但也是比較有激勵的,還有就是覺得 Python 比其他語言好用。

其實我個人一直很看好 Python 的前景,因為我認識的很多工程師都已經在學 Python,當然很多都是月收入大幾萬的。

當然,我個人並非一直用 Python ,我現在是一個 Android 開發者,學 Python 的初衷只是覺得在某些場景下用 Python 去實現比其他語言會好用很多,因此我一直在學習 Python,畢竟技多不壓身,同時一直堅信 Python 在未來幾年內必定會有大的前景。

同時,學習某一門語言千萬別抱著等等看的想法。對於一個技術人員而言,缺乏對新技術的渴望和熱情,這是一件非常危險的事情。之前有看到過一則新聞,有個老外的演講,說自己50多歲了仍然堅持每天寫代碼,了解最新的動態,所以他才能做到他們公司的首席科學家,因此他才能時刻指導項目團隊前進並保證項目的質量。他同時坦言對於一個不寫代碼、不了解最新技術動態的技術人員或者技術團隊的負責人而言,這種團隊也就足夠做做小項目,一旦壓力和項目過大,就會有很多問題暴露出來。

對於一個新人而言,無論學習什麼技術,都要以鼓勵的姿態出現。太多用薪水和你個人所看到的現狀去衡量一門技術,那絕對是欠缺眼光的。任何一門技術,一旦有人去學習,他就有可能逐漸成為這個領域的專家,即便是再爛再沒人用的開發語言技術,他也有可能就是明日的奠基者或者大佬。

最後,學習是對自己最好的投資,而機會屬於有準備的人,這是一個看臉的時代,但最終拼的還是實力。人與人之間的差距不在於智商,而在於如何利用業餘時間,所以沒有等出來的輝煌,只有干出來的精彩。

其實只要你想學習,什麼時候開始都不晚,不要擔心這擔心那,你只需要努力,剩下的交給時間,而你之所以沒有變強,只因你還不夠努力,要記得付出不亞於任何人的努力。

長摁『識別二維碼』,一起進步

生活不止眼前的苟且,還有手下的代碼、

和嘴上的扯淡

——

個人博客: http://xiyoumc.0x2048.com/

Github:https://www.github.com/xiyouMc


小白的Python入門教程:Python教程 - 廖雪峰的官方網站
從入門到精通,實戰項目還帶iOS App
附贈在線Python代碼解釋器,邊學邊在瀏覽器中敲代碼


答主本科是儀錶系,本科只正經的學過C語言(和同學相比,基礎很差)。讀研(計算機)後,因為課程需要,開始自學python。

現在研一快結束了,從基礎入門到後端(Flask、Django)、爬蟲、機器學習,用python做了很多事情,也深刻體會到python的簡潔、方便。

在學習的過程中,用google、stackoverflow、知乎搜集了很多資料。今天整理了一下,便於自己回顧,也希望能回饋知乎,幫助到大家。(在知乎潛水已經好一陣了!)

0.環境

  • python3.6:關於python2和python3的爭論網上有很多,對於新手,我建議直接下python3,能省很多事。
  • pycharm:python世界最好的一款IDE,裝它沒錯:)
  • pycharm安裝使用教程:
  • ipython:一款python解釋器,比原裝的好用

1.python基礎

  • learning-python-for-non-developers:告訴你怎麼學python的一篇文章
  • 廖雪峰python教程:可能是最好的中文python3教程。如果你不喜歡英文,看它就夠入門了。
  • 蕭井陌的編程入門指南:你還得了解一下,編程世界還有什麼。python是不是你(現在)要學的?
  • The Hitchhiker』s Guide to Python!:
  • A Byte of Python簡明python教程:邊看邊練習
  • Python Resource:一份python資料,國人寫的

2.python提高

學完上面那些,你可能覺得自己什麼都幹不了...是的。想要成為大牛,當然還得看點別的,提高一下。

  • python標準庫:python有豐富的標準庫。很多好東西庫里已經有了!
  • 如何閱讀python標準庫:知乎有很多牛人對這個問題作出了回答
  • python常用的標準庫以及第三方庫有哪些?:
  • 有哪些庫讓你詳見恨晚?:
  • awesome python:列出了嘗試解決各種問題時,python已有的工具類庫
  • python的非常酷的包:
  • python正則表達式:
  • fluent python:進階的書籍一
  • python高級編程:進階的書籍二
  • python cookbook:進階的書籍三
  • python進階必讀匯總:一篇挺有意思的文章,有些乾貨
  • stackoverflow python 百問:如果你實在不知道自己不懂什麼...可以看看別人都問了什麼,看你知不知道?
  • 理解裝飾器:用過都說好,但你最好知道其中原理
  • 深入理解元類:
  • 深入理解yield::

3.python實戰

學的有點無聊了?做點小練習吧!

  • python練習冊:每天一個小程序:
  • 作者的解法(求輕噴):
  • PRACTICE PYTHON:國外的一個題庫,附帶了solution:
  • leetcode演算法題:找工作必備,可以用python刷起來
  • TDD學python:
  • 500 line or less:500行代碼能幹的事情有很多!:
  • Codecademy:一個在線學習、闖關的網站

4.python web

很多人用python來寫web。python的web框架主要有:Django、Flask、Tornado等。我主要學習Flask和Django,所以資料也是以這兩者為主。

  • Flask官方指南:
  • Flask微框架的應用經驗談:
  • flask源碼分析:
  • flask博客教程入門:
  • flask博客教程進階:
  • 優達學城:用python寫一個博客網站:有時間可以跟一跟
  • django教程:被解放的姜戈:
  • django搭建簡易博客教程:
  • djiango基礎教程(有搭建的部分):
  • flask mega-tutorial:

5.爬蟲

相較於web、機器學習等技能,爬蟲可以說是最簡單的。如果你有比較好的基礎,學一兩天就能寫出一個爬蟲。寫好爬蟲是python工程師的基礎,但是,切勿沉迷於爬取美女圖片等奇淫技巧上。少年,你的夢想是拯救世界的吶!咳咳。回到正題,如果你不想在爬蟲上耗費太多功夫,我建議你看看:

  • requests庫:適合人類使用!尤其是你之前學過urllib...
  • beautiful soup文檔:負責解析
  • scrapy:一個框架
  • 爬蟲項目大全:改改別人的代碼,試一下新學的技術
  • 豆瓣爬蟲:基於requests/beautifulsoup

6.數據挖掘/機器學習

如果你的夢想是做AI,看這些就對了

  • 如何系統的學習python:
  • 機器學習入門資料整理:
  • 優達學城課程:
  • DATAQUEST-數據科學家的path:
  • Scipy Lecture Notes-One document to learn numerics, science, and data with Python:
  • python numpy教程:
  • Python數據分析基礎教程:NumPy學習指南(第2版):
  • 機器學習個人資料整理:
  • 吳恩達-Deep Learning Tutorial:
  • 在一周內學會在實際中使用機器學習:
  • 在一年內學會在實際中使用機器學習:
  • 基於深度學習的人臉識別(maching learning is fun):
  • 使用深度學習方法實現圖像修復:
  • How to Code and Understand DeepMind#x27;s Neural Stack:
  • 面向程序員的數據挖掘指南:

再推薦幾本書:

  • 周志華機器學習
  • 統計學習方法
  • 機器學習實戰
  • 用python寫機器學習演算法
  • 利用python進行數據分析
  • 集體智慧編程
  • 推薦系統實戰

7.代碼風格

不做土鱉,學會優雅的寫python。

  • 如何開發高質量的python代碼:
  • 谷歌開源項目風格指南(不止是python):
  • 如何在自己的代碼更加pythonic:
  • pep8:
  • 如何像python高手一樣編程:

8.python社區/博客

這方面我也看得比較少,以後會慢慢補上,大家也可以在issue裡面給我推薦。

  • 豆瓣董偉明博客:董大大的python web開發實戰一書給了我很多啟發
  • flask作者博客:flask都是作者的一個愚人節玩笑,這樣的大牛,當然要關注!

最後,無恥的廣告一下:

本文的github地址:ethanww/dive-into-python,歡迎star!會有更新:D


前幾天一個朋友問我應該如何學習Python,所以來回答一下這個問題做一個總結。

----- 正文分割線 -----

核心思路

建立良好的反饋機制。學習任何一樣東西都是一樣。對於編程來說,特別是非計算機專業的小夥伴們,要進一步注意的是,我們學習編程是為了用,所有的編程學習都應該牢牢以需求和應用為導向。具體在實現上,主要是學習一點做一點項目,循環上升。

學習路徑

第一步是打基礎。對於零基礎新手,我通常建議跟著一門課或者一本書仔仔細細地地毯式過一遍,這裡需要注意的重點是要及時做老師布置的題目或者課本後的習題。這些題目固然簡單,也不一定很有實用場景,但是可以很好地幫助初學者克服畏難情緒。如果已經有一定的基礎,可以考慮大概過一遍以後選一些看起來順眼的題目找找感覺,在寫的過程中找新語言和舊語言的共同點和不痛點,盡量儘快把舊知識的積累遷移到新知識的學習上。這一步對於新手來說有兩個目的,了解什麼是編程、找這門語言的感覺。對於非小白來說主要是後者。因此這個階段到失去繼續看的興趣就可以停下來了。

第二步是學習如何學習編程或者如何學習這門語言。找一個小方向開始做,比如說寫一個簡單的爬蟲。舉個例子,你可以試試看抓取我們學院網站(重要新聞 - WISE)下所有網頁。這個時候你同時需要一些特定方向的資料,比如爬蟲入門教程。這個階段的主要目的是真正地學會用這門語言做事情,以及學習這門語言要怎麼學習。這個階段的標準是把項目預期的結果做出來一個最初步的結果即可。遇到不懂的問題,反覆回去翻入門資料和各種博客教程。

第三步是培養良好的編程習慣、學習如何優化代碼和設計代碼。找一個你覺得寫的有很多沒有解決的問題的程序,把你發現的問題一個一個解決,在這個過程中大量地去看各種各樣零散的技術博客,看看有沒有可以啟發到程序優化的知識點,比如說你偶然看到一個並發相關的文章,就可以試試看能不能用在爬蟲上。這個階段的資料會急速減少,是最難做的一個階段,需要花大量的時間搜索資料,以及慢慢形成比較高效的信息收集機制。這個階段的主要目標是增加深度,做到實在做不下去就可以放下來做下一步了。

第四步是全面了解整個領域。這個時候可以去按上面同樣的方法進入這門語言主要應用場景的其他領域。如果第三步做的比較到位,第四步的工作將會主要集中在這個領域的思想和這個領域的工具鏈的思想和使用方法。如果第三步做的不到位,第四步仍然會不可避免地覺得像學習新領域一樣,重複以上步驟即可。這個階段的主要目標是學習這個應用場景下的思想,主要的標準是如果你換一門陌生的語言仍然有能力實現這個思想,那麼說明你對這塊的思想掌握的已經比較牢固了。

參考資料

以下資料按應用場景分類,按照難度排序。這個資料清單是一個入門清單,是我和我們團隊總結的我們覺得最好用的最簡單的入門教程。這些教程的主要優點有幾個:簡單清晰;突出應用場景的思想;補充必要的知識(比如sklearn官方文檔同時也是一個機器學習教程)。

Python入門:

  • Crossin編程教室:Crossin的編程教室
  • 廖雪峰:Python教程

Python爬蟲:

  • 我寫的小白入門:Python爬蟲|Python爬蟲入門(一):爬蟲基本結構簡單實例
  • @xlzd 的教程:https://xlzd.me/tag/crawler/1
  • @爬蟲 的教程:爬蟲之從入門到精通

Python科學計算與數據分析:

  • 教材:利用Python進行數據分析 (豆瓣)
  • NumPy(科學計算和數據分析):Quickstart tutorial
  • Pandas(數據分析)入門:10 Minutes to pandas
  • Pandas完整+數據分析教程:pandas: powerful Python data analysis toolkit
  • SciPy(高級科學計算):SciPy v1.0.0 Reference Guide
  • SymPy(符號計算):SymPy Tutorial - SymPy 1.1.1 documentation
  • Statsmodels(統計計算):StatsModels: Statistics in Python

Python機器學習:

  • Sklearn(機器學習)入門:An introduction to machine learning with scikit-learn
  • Sklearn完整版+機器學習入門:contents - scikit-learn 0.19.1 documentation

上面的同學都所得很好,我還是插一句,就一句

編程一定是要編的,光看書看視頻照著代碼敲是不行的,一定要自己動手編才行!


推薦閱讀:

如何確定自己是否適合做程序員?
為什麼尾遞歸優化似乎不常出現在非函數式語言的解釋器、編譯器中?
怎樣讀《C++ 編程思想》?
本人從事前端,想學習一門後端語言,求大神推薦?
學習經濟學需要熟悉哪些編程語言?

TAG:編程語言 | Python | 如何學習 X |