本文主要針對零基礎想學習Python者。本文本文由@史江歌([email protected] QQ:499065469)根據網路資料收集整理而成,感謝互聯網,感謝各位的分享。鳴謝!本文會不斷更新。
《如何用好Google搜尋引擎? 》 知乎問答@崔凱
《十大高明的Google搜尋技巧》by-雪影藍風
《如何用好Google》 by-李笑來
推薦閱讀《提問的智慧》 by-啄木鳥社區
《提問的智慧》 務必請讀完!
Python官方文件點擊打開連結英文不好的,暫時就先別看了,以後一定要加強英文學習哦;)。
推薦《How to think like a computer scientist》,對應中文版本《Python學習筆記--皮大慶》,非常適合零基礎入門。
推薦[《Python程式設計實踐》] (http://book.douban.com/subject/7059900/)
推薦《簡明Python教學》
推薦《笨辦法學Python (Learn Python The Hard Way)》
推薦《Python基礎教學》
推薦Python入門教學-By廖雪峰
Tutorial - Learn Python in 10 minutes
推薦Requests 原始碼閱讀
《Python進階》(Intermediate Python 中文版)
知乎問答:關於Python 的經典入門書籍有哪些?
V2EX問答: 文科生想學Python
Python快速教學
麻省理工公開課《電腦科學及程式設計導論》,針對零基礎者網易公開課程。
課程介紹這門課程適用於那些擁有很少或沒有程式設計經驗的學生,它致力於使學生理解計算機在解決問題中的作用,並且幫助學生,不論其專業,使他們對於能夠完成有用的小程序的目標充滿信心。
雖然我不是Python高手,但我是零基礎,之前會的都是軟體PS,PPT之類。
如果目的是想成為程式設計師,參考教學大綱。
如果只是學程序,理解科技,解決工作問題,我的方式可以參考使用:
找到合適的入門書籍,大致讀一次,循環啊判斷啊,常用類啊,搞懂(太難的跳過)
做些簡單習題,字串比較,讀取日期之類《Python Cookbook》不錯(太難太無趣的,再次跳過,保持興趣是最重要的,不會的以後可以再學)
加入Python討論群,態度友善笑瞇瞇(很重要,這樣高手才會耐心糾正你錯誤常識)。 很多小問題,糾結許久,對方一句話點播思路,真的節約你很多時間。耐心指教我的好人,超級超多謝。
解決自己電腦問題。 例如下載美劇,零散下載了2,4,5,8集,而美劇共12集,怎麼找出漏下的那幾集?然後問題分解,1讀取全部下載檔名,2提取集的數字,3數字排序和(1--12)對比,找出漏下的。
時時刻刻記住目的,不是為了當程式設計師,是為了解決問題。
例如,想偷懶抓網頁內容,用urllib不行,用request也不行,才發現抓取內容涉及那麼多方面(cookie,header,SSL,url,javascript等等),當然可以聽人家勸,回去好好讀書,從頭讀。
或者,不求效率,只求解決,用ie打開網頁再另存為行不行? ie已經渲染過全部結果了。
問題變成:1--開啟指定的10個網頁(一行程式碼就行)。更複雜的想保存呢?利用已經存在的包,例如PAM30(我的是Python3),直接打開ie,用函數outHTML另存為文本,再用搜尋函數(str搜尋也行,re正則也行) 找到資料。簡單吧?而且程式碼超級短。
保持興趣,用最簡單的方式解決問題,什麼底層驅動,各種交換,留給大牛去寫吧。我們利用已經有的包完成。
耐心閱讀文檔,並且練習快速讀取文檔。拿到新包,找到自己所需要的函數,是需要快速讀一次的。這個不難,讀函數名,大概猜得到是幹嘛的,然後看看回傳值,能判斷是不是自己需要的。
寫幫助文件和學習筆記,並發布分享。教別人的時候,其實你已經自己再思考一次了。
我覺得學程式就像學英文,把高頻率的字(循環,判斷,常用包,常用函數)搞懂,就能拼裝成自己想要的軟體。
然後,http://stackoverflow.com 和http://Google.com 是很好用的。
然後,堅持下去。
一定要保持興趣,太複雜的跳過,就像小學數學,小學英語,都是由簡入深。
網路很平面,無數國際大牛著作好書,關於Python,演算法,電腦,網絡,或程式設計師思路,或商業思維(浪潮之巔是本好書)等等,還有國際名校的網路公開課(中英文字幕翻譯完畢,觀看不是難事),講計算機,網絡,安全,或者安卓系統,什麼都有,只要能持續保持興趣,一點點學習下去,不是難事。
所有天才程式設計師,都曾是兒童,回到兒童思維理解與學習。覺得什麼有趣,先學,不懂的,先放著,遇到問題再來學,效果更好。
唯一建議是,不要太貪心,耐心學好一門優雅的語言,再學其它。雖然Javascript做特效很炫,或提某問題時,有大牛建議,用Ruby來寫更好之類,不要改方向。就像老笑話:「要學習遞歸,必須先理解遞歸。」然後死循環一直下去。堅持學好一門語言,再研究其他。
即使一門語言,跟網絡,資料庫等等相關的部分,若都能學好,再學其他語言,是很快的事。
另外就是,用學英文的耐心來學計算機,英文遇到不懂的詞,抄下,查詢。
python裡,看到Http,查查定義,看到outHtml,查查定義,跟初學英語時候一樣,不要直接猜意思,因為精確描述性定義,跟含糊自然語有區別的。而新人瞎猜,很容易錯誤理解,wiki,google很有用。
我們假設你是一個初級程式設計師, 只懂得一點點的基礎知識, 希望能夠用python來做開發. 這篇文檔就是為了滿足以上目標而寫的.
大綱
按照這篇文件所指示的任務過一遍, 你就能夠做到:
熟悉python語言, 以及學會python的編碼方式. 熟悉python庫, 遇到開發任務的時候知道如何去找對應的模組. 知道如何查找和獲取第三方的python庫, 以應付開發任務. 學習步驟
安裝開發環境
如果你在window下, 去下載pythonxy安裝起來, 然後運行python, 進入python解釋環境.
如果你在ubuntu下, 執行: sudo apt-get install python, 然後在命令列下運行python, 進入python解釋環境.
學習方法
身為一個成熟的開發人員, 我學習新事物(假設是pyqt)的習慣方式是:
直接用google搜尋pyqt的官方網站. 按照官方網站的說明, 下載pyqt. (如果是用ubuntu, 看看軟體庫裡面是否有足夠新的版本) 下載過程中, 開始閱讀官方網站上面的教程. 一邊看教程, 一遍按照教程使用pyqt. 如果發現教程不夠全面, 用google搜索是否有對應的教學書籍可以看. 示例學習完畢, 開發一個玩具程序, 用來檢驗自己是否需要用到的功能.開始學習python
我建議你學習的過程也按照上面來, 首先過一遍python官方文檔:
http://docs.python.org/tutorial/index.html
然後做http://www.pythonchallenge.com/ 這個網站上面的題目.
如果卡在某一關太久, 可以看答案(google python challenge answer), 做完後看看別人的編碼方式和自己有什麼區別.
小型專案
做完一遍後, 你會發現已經熟悉了基本的python開發. 然後做點小專案吧. 這裡是一些題目, 挑感興趣的去做.
FAQ
Q: 遇到了問題, 到哪裡求助?
A: 上http://groups.google.com/group/python-cn (需要翻牆) 或http://stackoverflow.com 提問就可以了.
Q: 如何找出python的某個功能?
A: 看官方文件. http://docs.python.org/library/index.html
Q: 如何用python完成一個任務(例如寫網站)?
A: google: python 寫網站, 或google: python web development.
階段一:前輩領進門。 第一眼是一個前輩給我看了Python的程式碼,因為自己最早學習的是Java語言,第一眼看到Python的時候,前輩說,“Python是物件導向的”,然後就印了幾句代碼。但我怎麼也看不出到底哪裡是「物件導向」的。前輩說“在Python裡,一切皆對象”,我才有點領悟的說道:“原來把什麼看成對象,就是面向對象”,哈哈。
階段二:開始看的是《Dive into Python》、《Leaning python》、《Python Doc》。 因為有很多語言學習經歷,很快就完成了初步文法和使用學習。太複雜的特性還是在使用上逐步掌握的。
階段三:開始使用Python做一些自己的日常工作。 例如Python搜尋文件,Python批量處理等,使用最多的還是re模組和socket相關模組。寫了大量的例子,讓自己對Python更加喜愛,也更加熟悉。此時翻閱最多的是《Python Doc》的指南。不管是語言參考、函式庫參考、Demo參考,都有大量可使用的內容,內容品質很高堪比JDK。
階段四:生產上馬。 開始使用Django,Flask,Tornado開發一些web應用,寫一些日常使用的工具包等。逐步提升設計能力,和整體程式碼的管理能力。
階段五:更合理的分配好C,Java,Python三門語言各自擅長的部分。 把合適的語言用到適當的地方。儘管一門語言有時候可以搞定所有的,但用擅長的語言解決合適的問題才是效率最高的。這也是「Python的大道至簡」的理念帶給我的幫助與體悟。
PS:其中過程中主要的一些方法:
看書。學習的基礎。
自己本地練習。程式設計還是要實踐出真知。
資料查詢。 google,stackoverflow等多關注。
交流。各種論壇上的python group,論壇。最早去的CU,JavaEye,不過現在貌似去的少了。 google group必須訂閱。
學習+實踐+總結,掌握語言的法寶。
看了這麼多資料了,還沒動手敲程式碼?
好吧,最好一篇文章《我在學習編程中犯的兩個最大錯誤》點擊打開鏈接
Just do it 。動手敲程式碼吧。
註:本文由@史江歌([email protected])根據網路資料收集整理而成。
Python技術部落格、招募、開源軟體、Python中文網站導航
遇到python問題怎麼樣解決? python help dir stackoverflow docs google
線上影片教學(英文)codecademy
英文Python for beginners
英文How do I learn Python from zero to web development?(各種電子書推薦)點擊開啟鏈接
Python應用與實作Python是什麼?誰在用它?相關工具?作者:@吳秦
Python模組學習相當於翻譯官網文檔
針對有其他語言經驗的人,英文:Learn X in Y minutes 中文翻譯Y分鐘學會Python(譯)
PyCoder's Weekly 中文翻譯說明:文章品質很高
PEP 20 (Python之禪) 的實例說明:code_stype
Unicode之痛必讀
有關Python 2 和Sublime Text 中文Unicode 編碼問題的分析與理解必讀
stackoverflow上Python相關回答整理翻譯
Python語言總結-初級中級高級教程作者:@Crifan Li
Python Guide Python 最佳實踐(英文)
Python 最佳實務指南(中文) 關於Python安裝、設定、和日常使用的最佳實務手冊。
Python 最佳實踐指南2018 Python 日常使用的最佳實踐,高級Python 開發者必知必會的知識
《碼農週刊》乾貨精選(Python 篇) 精選總結
Python 3 Module of the Week Python 標準函式庫的使用
Python - 100天從新手到大師100天從新手到大師
Python 和Diango 學習資料,書籍,文章,以及實戰項目
What the f*ck Python!
https://github.com/leisurelicht/wtfpython-cn
知乎:Python 爬蟲如何入門學習
Python爬蟲學習系列教學@崔慶才係列教程,入門、實戰、爬蟲利器介紹、進階
Python模擬登入新浪微薄(使用RSA加密方式和Cookies檔案)
http://uliweb.clkg.org/tutorial/view_chapter/240
一個簡單的分散式新浪微博爬蟲
用python爬蟲抓站的一些技巧總結
使用python爬蟲抓站的一些技巧總結:進階篇
網路爬蟲系列
Windows系統下,Python相關套件Windows Binaries for Python Extension Packages