⑴ 如何系統地自學 python
是否非常想學好 Python,一方面被瑣事糾纏,一直沒能動手,另一方面,擔心學習成本太高,心裡默默敲著退堂鼓?
幸運的是,Python 是一門初學者友好的編程語言,想要完全掌握它,你不必花上太多的時間和精力。
Python 的設計哲學之一就是簡單易學,體現在兩個方面:
語法簡潔明了:相對 Ruby 和 Perl,它的語法特性不多不少,大多數都很簡單直接,不玩兒玄學。
切入點很多:Python 可以讓你可以做很多事情,科學計算和數據分析、爬蟲、Web 網站、游戲、命令行實用工具等等等等,總有一個是你感興趣並且願意投入時間的。
廢話不多說,學會一門語言的捷徑只有一個: Getting Started
¶ 起步階段
任何一種編程語言都包含兩個部分:硬知識和軟知識,起步階段的主要任務是掌握硬知識。
°1 硬知識
「硬
知識」指的是編程語言的語法、演算法和數據結構、編程範式等,例如:變數和類型、循環語句、分支、函數、類。這部分知識也是具有普適性的,看上去是掌握了一
種語法,實際是建立了一種思維。例如:讓一個 Java 程序員去學習 Python,他可以很快的將 Java 中的學到的面向對象的知識 map 到
Python 中來,因此能夠快速掌握 Python 中面向對象的特性。
如果你是剛開始學習編程的新手,一本可靠的語法書是非常重要的。它看上去可能非常枯燥乏味,但對於建立穩固的編程思維是必不可少。
下面列出了一些適合初學者入門的教學材料:
❖「笨方法學 Python」:http://learnpythonthehardway.org/book/
這本書在講解 Python 的語法成分時,還附帶大量可實踐的例子,非常適合快速起步。
❖「廖雪峰的 Python 2.7 教程」:Home - 廖雪峰的官方網站
Python 中文教程的翹楚,專為剛剛步入程序世界的小白打造。
❖「The Hitchhiker』s Guide to Python!」:The Hitchhiker』s Guide to Python!
這本指南著重於 Python 的最佳實踐,不管你是 Python 專家還是新手,都能獲得極大的幫助。
❖「Python 官方文檔」:Our Documentation
實踐中大部分問題,都可以在官方文檔中找到答案。
❖ 輔助工具:Python Tutor
一個 Python 對象可視化的項目,用圖形輔助你理解 Python 中的各種概念。
Python 的哲學:
用一種方法,最好是只有一種方法來做一件事。
學習也是一樣,雖然推薦了多種學習資料,但實際學習的時候,最好只選擇其中的一個,堅持看完。
必要的時候,可能需要閱讀講解數據結構和演算法的書,這些知識對於理解和使用 Python 中的對象模型有著很大的幫助。
°2 軟知識
「軟知識」則是特定語言環境下的語法技巧、類庫的使用、IDE的選擇等等。這一部分,即使完全不了解不會使用,也不會妨礙你去編程,只不過寫出的程序,看上去顯得「傻」了些。
對
這些知識的學習,取決於你嘗試解決的問題的領域和深度。對初學者而言,起步階段極易走火,或者在選擇 Python 版本時徘徊不決,一會兒看 2.7
一會兒又轉到 3.0,或者徜徉在類庫的大海中無法自拔,Scrapy,Numpy,Django
什麼都要試試,或者參與編輯器聖戰、大括弧縮進探究、操作系統辯論賽等無意義活動,或者整天跪舔語法糖,老想著怎麼一行代碼把所有的事情做完,或者去構想
聖潔的性能安全通用性健壯性全部滿分的解決方案。
很多「大牛」都會告誡初學者,用這個用那個,少走彎路,這樣反而把初學者推向了真正的彎路。
還不如告訴初學者,學習本來就是個需要你去走彎路出 Bug,只能腳踏實地,沒有奇跡只有狗屎的過程。
選擇一個方向先走下去,哪怕臟丑差,走不動了再看看有沒有更好的解決途徑。
自己走了彎路,你才知道這么做的好處,才能理解為什麼人們可以手寫狀態機去匹配卻偏要發明正則表達式,為什麼面向過程可以解決卻偏要面向對象,為什麼我可以操縱每一根指針卻偏要自動管理內存,為什麼我可以嵌套回調卻偏要用 Promise...
更重要的時,你會明白,高層次的解決方法都是對低層次的封裝,並不是任何情況下都是最有效最合適的。
技術涌進就像波浪一樣,那些陳舊的封存已久的技術,消退了遲早還會涌回的。就像現在移動端應用、手游和 HTML5 的火熱,某些方面不正在重演過去 PC 的那些歷史么?
因此,不要擔心自己走錯路誤了終身,堅持並保持進步才是正道。
起步階段的核心任務是掌握硬知識,軟知識做適當了解,有了穩固的根,粗壯的枝幹,才能長出濃密的葉子,結出甜美的果實。
¶ 發展階段
完成了基礎知識的學習,必定會感到一陣空虛,懷疑這些語法知識是不是真的有用。
沒錯,你的懷疑是非常正確的。要讓 Python 發揮出它的價值,當然不能停留在語法層面。
發展階段的核心任務,就是「跳出 Python,擁抱世界」。
在你面前會有多個分支:科學計算和數據分析、爬蟲、Web 網站、游戲、命令行實用工具等等等等,這些都不是僅僅知道 Python 語法就能解決的問題。
拿
爬蟲舉例,如果你對計算機網路,HTTP協議,HTML,文本編碼,JSON一無所知,你能做好這部分的工作么?而你在起步階段的基礎知識也同樣重要,如
果你連循環遞歸怎麼寫都還要查文檔,連 BFS 都不知道怎麼實現,這就像工匠做石凳每次起錘都要思考錘子怎麼使用一樣,非常低效。
在這個階段,不可避免要接觸大量類庫,閱讀大量書籍的。
°1 類庫方面
「Awesome Python 項目」:vinta/awesome-python · GitHub
這里列出了你在嘗試解決各種實際問題時,Python 社區已有的工具型類庫,如下圖所示:
你可以按照實際需求,尋找你需要的類庫。
至於相關類庫如何使用,必須掌握的技能便是閱讀文檔。由於開源社區大多數文檔都是英文寫成的,所以,英語不好的同學,需要惡補下。
°2 書籍方面:
這里我只列出一些我覺得比較有一些幫助的書籍,詳細的請看豆瓣的書評:
科學和數據分析:
❖「集體智慧編程」:集體智慧編程 (豆瓣)
❖「數學之美」:數學之美 (豆瓣)
❖「統計學習方法」:統計學習方法 (豆瓣)
❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)
❖「數據科學實戰」:數據科學實戰 (豆瓣)
❖「數據檢索導論」:信息檢索導論 (豆瓣)
爬蟲:
❖「HTTP 權威指南」:HTTP權威指南 (豆瓣)
Web 網站:
❖「HTML & CSS 設計與構建網站」:HTML & CSS設計與構建網站 (豆瓣)
...
列到這里已經不需要繼續了。
聰明的你一定會發現上面的大部分書籍,並不是講 Python 的書,而更多的是專業知識。
事實上,這里所謂「跳出 Python,擁抱世界」,其實是發現 Python 和專業知識相結合,能夠解決很多實際問題。這個階段能走到什麼程度,更多的取決於自己的專業知識。
¶ 深入階段
這個階段的你,對 Python 幾乎了如指掌,那麼你一定知道 Python 是用 C 語言實現的。
可是 Python 對象的「動態特徵」是怎麼用相對底層,連自動內存管理都沒有的C語言實現的呢?這時候就不能停留在表面了,勇敢的拆開 Python 的黑盒子,深入到語言的內部,去看它的歷史,讀它的源碼,才能真正理解它的設計思路。
這里推薦一本書:
「Python 源碼剖析」:Python源碼剖析 (豆瓣)
這本書把 Python 源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書需要對 C 語言內存模型和指針有著很好的理解。
另
外,Python 本身是一門雜糅多種範式的動態語言,也就是說,相對於 C 的過程式、 Haskell 等的函數式、Java
基於類的面向對象而言,它都不夠純粹。換而言之,編程語言的「道學」,在 Python
中只能有限的體悟。學習某種編程範式時,從那些面向這種範式更加純粹的語言出發,才能有更深刻的理解,也能了解到 Python 語言的根源。
這里推薦一門公開課
「編程範式」:斯坦福大學公開課:編程範式
講師高屋建瓴,從各種編程範式的代表語言出發,給出了每種編程範式最核心的思想。
值得一提的是,這門課程對C語言有非常深入的講解,例如C語言的范型和內存管理。這些知識,對閱讀 Python 源碼也有大有幫助。
Python 的許多最佳實踐都隱藏在那些眾所周知的框架和類庫中,例如 Django、Tornado 等等。在它們的源代碼中淘金,也是個不錯的選擇。
¶ 最後的話
每個人學編程的道路都是不一樣的,其實大都殊途同歸,沒有迷路的人只有不能堅持的人。雖然聽上去有點雞湯,但是這是事實。
希望想學 Python 想學編程的同學,不要猶豫了,看完這篇文章,Just getting started~
⑵ 2016最新python入門到精通視頻教程下載地址
給你推薦一個免費的Python及Django在線教程:劉江的Python教程
如果覺得不好,右邊有個差評按鈕,請點擊!
⑶ 40歲老男人從0開始學python實錄(第4天):廖雪峰,拜拜了您嘞
各位渴望看我笑話的老鐵們,恭喜,你們又有樂子看了。
在昨天順利攻克了文本編輯器難題後,我很愉快繼續學習後面的兩個小節《Python代碼運行助手》《輸入和輸出》。
前者沒啥可說的,感覺跟我沒啥太大關系、意義不大,簡單看看就過去了。
《輸入和輸出》一節,按照教程操作,還是蠻愉快的。
這節主要講了print和input命令的使用方法,以及變數的概念。
前面的學習過程可謂一馬平川,結果最後的練習稍微出現了點小問題。
練習:請利用print()輸出1024 * 768 = xxx。
我本來覺得是個很簡單的問題,沒想到輸入了4遍才搞定。
我估計應該是中間錯加了空格的問題。
好吧,對比例子,應該還得加逗號。
嗯,這他么其實是個手誤,逗號輸錯了位置。(殘念)
這小玩意都用了四遍才搞定,40歲的老男人真的太難了。
繼續進入後面的學習。
下一章《Python基礎》中第一節《數據類型和變數》。
然後,我就蒙圈了。
這一節的內容知識量明顯增多,前面的內容還好,按部就班的按照教程進行操作就好。
後面開始出現轉義符的概念,什麼 、 、之類的東東,總之確實需要動些腦子了。
這里我覺得,是不是可以簡單理解為:兩個「」表示顯示「」,一個「」表示轉義呢?
相比之下,後面講「用r''表示''內部的字元串默認不轉義」我感覺更好理解一些。
還有,「 表示製表符」是什麼意思?
我真的好傻,悲傷的淚水不爭氣的流了下來。
上面的問題,哪位知道的仁兄,望在評論區賜教,在此謝過了。
再往後講變數,我就有點進行不下去了。
給a賦值為1,這個我明白,但是後面t_007=T007,這是為啥?咋蹦出來的?
或者t_007跟a是一個概念,也是在進行賦值操作?
我這么猜測不知道對不對。
他後面舉的那個例子,我就徹底暈菜了。
其實說起來,可能也不能怪人家教程,周末這兩天在家,確實也很難靜下來學習。
但是另一方面,就像很多網友評論區、微信上跟我探討的,廖雪峰這個教程確實還是存在一些問題的,甚至有人說他有些誤導的成分在裡面,這個我學的還少,就不敢妄言了。
所以,我決定,結合自己的實際情況(歲數大、腦子慢!),以後以b站600集視頻為主不香嗎?
畢竟,那個看的很歡樂,最關鍵的是,學習至今還沒遇到檻。
所以,下一期的心得,我就說說在b站上,我都學了些啥吧。。。
⑷ 廖雪峰python3教程怎麼樣
您好,每個老師的都很不錯!
我現在也正在看Python,個人認為,應該先找一個能基礎入門的,快速看完並實際練習一遍,然後在結合其他人的書在看幾遍,這樣效果比較好。每個人寫書的特點都不一樣,因此分類的重點什麼的都不太一樣。這樣多看看多練習一下,能更全面一點!
視頻的話,也類同,不過建議先看書自己來,自己把代碼敲一遍,然後在看視頻,看看自己出錯的地方,老師怎麼解決的,自己是怎麼解決的,那種方法更好一點!
共同進步~~~謝謝
⑸ python代碼運行助手怎麼打開
python代碼運行助手是能在網頁上運行python語言的工具。因為python的運行環境在很多教程里都是用dos的,黑乎乎的界面看的有點簡陋,所以出了這python代碼運行助手,作為ide。
實際上,python代碼運行助手界面只能算及格分,如果要找ide,推薦使用jupyter。jupyter被集成到ANACONDA里,只要安裝了anacoda就能使用了。
回到這個問題:
1、要打開這運行助手首先要下載一個learning.py,如果找不到可以復制如下代碼另存為「learning.py」,編輯器用sublime、或者notepad++。
#!/usr/bin/envpython3
#-*-coding:utf-8-*-
r'''
learning.py
APython3tutorialfromhttp://www.liaoxuefeng.com
Usage:
python3learning.py
'''
importsys
defcheck_version():
v=sys.version_info
ifv.major==3andv.minor>=4:
returnTrue
print('Yourcurrentpythonis%d.%d.PleaseusePython3.4.'%(v.major,v.minor))
returnFalse
ifnotcheck_version():
exit(1)
importos,io,json,subprocess,tempfile
fromurllibimportparse
fromwsgiref.simple_serverimportmake_server
EXEC=sys.executable
PORT=39093
HOST='local.liaoxuefeng.com:%d'%PORT
TEMP=tempfile.mkdtemp(suffix='_py',prefix='learn_python_')
INDEX=0
defmain():
httpd=make_server('127.0.0.1',PORT,application)
print('ReadyforPythoncodeonport%d...'%PORT)
httpd.serve_forever()
defget_name():
globalINDEX
INDEX=INDEX+1
return'test_%d'%INDEX
defwrite_py(name,code):
fpath=os.path.join(TEMP,'%s.py'%name)
withopen(fpath,'w',encoding='utf-8')asf:
f.write(code)
print('Codewroteto:%s'%fpath)
returnfpath
defdecode(s):
try:
returns.decode('utf-8')
exceptUnicodeDecodeError:
returns.decode('gbk')
defapplication(environ,start_response):
host=environ.get('HTTP_HOST')
method=environ.get('REQUEST_METHOD')
path=environ.get('PATH_INFO')
ifmethod=='GET'andpath=='/':
start_response('200OK',[('Content-Type','text/html')])
return[b'<html><head><title>LearningPython</title></head><body><formmethod="post"action="/run"><textareaname="code"style="width:90%;height:600px"></textarea><p><buttontype="submit">Run</button></p></form></body></html>']
ifmethod=='GET'andpath=='/env':
start_response('200OK',[('Content-Type','text/html')])
L=[b'<html><head><title>ENV</title></head><body>']
fork,vinenviron.items():
p='<p>%s=%s'%(k,str(v))
L.append(p.encode('utf-8'))
L.append(b'</html>')
returnL
ifhost!=HOSTormethod!='POST'orpath!='/run'ornotenviron.get('CONTENT_TYPE','').lower().startswith('application/x-www-form-urlencoded'):
start_response('400BadRequest',[('Content-Type','application/json')])
return[b'{"error":"bad_request"}']
s=environ['wsgi.input'].read(int(environ['CONTENT_LENGTH']))
qs=parse.parse_qs(s.decode('utf-8'))
ifnot'code'inqs:
start_response('400BadRequest',[('Content-Type','application/json')])
return[b'{"error":"invalid_params"}']
name=qs['name'][0]if'name'inqselseget_name()
code=qs['code'][0]
headers=[('Content-Type','application/json')]
origin=environ.get('HTTP_ORIGIN','')
iforigin.find('.liaoxuefeng.com')==-1:
start_response('400BadRequest',[('Content-Type','application/json')])
return[b'{"error":"invalid_origin"}']
headers.append(('Access-Control-Allow-Origin',origin))
start_response('200OK',headers)
r=dict()
try:
fpath=write_py(name,code)
print('Execute:%s%s'%(EXEC,fpath))
r['output']=decode(subprocess.check_output([EXEC,fpath],stderr=subprocess.STDOUT,timeout=5))
exceptsubprocess.CalledProcessErrorase:
r=dict(error='Exception',output=decode(e.output))
exceptsubprocess.TimeoutExpiredase:
r=dict(error='Timeout',output='執行超時')
exceptsubprocess.CalledProcessErrorase:
r=dict(error='Error',output='執行錯誤')
print('Executedone.')
return[json.mps(r).encode('utf-8')]
if__name__=='__main__':
main()
2,再用一個記事本寫如下的代碼:
@echooff
pythonlearning.py
pause
另存為『運行.bat』
3、把「運行.bat」和「learning.py」放到同一目錄下,
⑹ 看完廖雪峰的python,但是感覺自己掌握不扎實,不知道該怎麼做
python感覺自己掌握不扎實,不知道該怎麼做
不管學習什麼新的東西,效率最低但是又不可或缺的環節就是看教科書了。雖然看書的過程可能會很無聊,但是過一遍書至少能對整個知識框架有個大體的把握。我最早知道 Python 還是在《黑客與畫家》這本書中看到的,書裡面有一章節是講編程語言的,作者很推薦把 python 作為學習編程的入門語言。我當時是把《簡明 Python 教程》給過了一邊,後來又看了一遍《深入python》,這里特別推薦《深入 Python》,除了介紹 python 的基本特性之外,還介紹了諸如函數編程、正則表達式、處理 HTML 和 XML等高級用法。除了看書,上公開課也是挺不錯的,視頻教學本來就比自己啃教科書有意思,而且完成課程作業也能鍛煉動手編程能力。我上過兩門不錯的公開課,一門是萊斯大學在 Coursera 上開的《Python互動式編程導論》,一邊學 python,一邊寫些小游戲,肯定不會覺得無聊;另一門就是 MIT 在 edX 上開的《計算機科學及python編程導論》,它是 MIT edX系列課程(XSeries)中的第一課,系列課程共兩門,除了這門課以外還有《計算思維及數據科學導論》,不過第二門就沒有上過了。
《簡明 Python 教程》
《深入 Python》
《Python互動式編程導論》
《計算機科學及python編程導論》
另外,我和題主的情況有點像,也不是學計算機專業的,並且同樣對自己的專業不感興趣,以後也是想從事與數據科學相關的工作。我目前的狀況都是在自學,上公開課,看教科書,跟大牛們的技術博客。
⑺ python是一門程序設計語言,學習python有什麼好的視頻教程
職業教育領域這兩年發展得特別快,其中有一個培訓項目就是編程語言python,早些年提到計算機語言,普通人聽過的可能也就是C語言、Java之類的,但就在這幾年,python突然就火了,而且一提到學編程,python也成了首選。這都是什麼原因呢?python其實早在1991年就已經發布了,幾十年後突然就火了這讓人也挺奇怪的,下面我會就以下觀點談談看:
一、學python有啥用它最主要的作用當然是用來編寫程序了,我們平時在電腦端或手機端使用的各類應用程序底層都是一大堆代碼,這些代碼就是程序員們用編程語言寫出來的,學會了python就可以像程序員一樣,自己寫應用程序了。
對於python這門程序設計語言,各位有過什麼經歷或感受嗎,歡迎留言區分享。
⑻ 哪裡有python自學教程
【033】Python(喵喵教程)網路網盤免費資源在線學習
鏈接: https://pan..com/s/1ZS20DsOp-_70wVD9NNxGow
【033】Python(喵喵教程) 量化金融項目 北京15期就業班
python課件 python開發工具 python基礎班 Python3爬蟲課程資料代碼.zip
1-4 項目飛機大戰 1-3 面向對象 1-2 python基礎 1-1 Linux基礎 14-vi編輯器 13-ubuntu軟體安裝 12-打包壓縮 11-其他命令