搜尋
首頁後端開發Python教學如何有系統地自學Python 語言

如何有系統地自學Python 語言

Dec 02, 2016 am 11:58 AM
python自學

零基礎情況下,學一門語言充實下自己,Python,簡潔、優美、容易使用,是一個很好的選擇。那麼該如何有系統地自學Python呢?

有的人很想學好Python,一方面被瑣事糾纏,一直沒能動手,另一方面,擔心學習成本太高,心裡默默敲著退堂鼓?

 幸運的是,Python是一門初學者友善的程式語言,想要完全掌握它,你不必花太多的時間和精力。

Python的設計哲學之一就是簡單易學,體現在兩個方面:

語法簡潔明了:相對Ruby和Perl,它的語法特性不多不少,大多數都很簡單直接,不玩兒玄學。

切入點很多:Python可以讓你可以做很多事情,科學計算和數據分析、爬蟲、Web網站、遊戲、命令列實用工具等等等等,總有一個是你感興趣並且願意投入時間的。

廢話不多說,學會一門語言的捷徑只有一個:Getting Started

1、起步階段

任何一種程式語言都包含兩個部分:硬知識和軟知識,起步階段的主要任務是掌握硬知識。任何一種程式語言都包含兩個部分:硬知識和軟知識,起步階段的主要任務是掌握硬知識。

1、硬知識

「硬知識」指的是程式語言的語法、演算法和資料結構、程式設計範式等,例如:變數和類型、循環語句、分支、函數、類別。這部分知識也是具有普適性的,看起來是掌握了一種文法,實際上是建立了一種思考。例如:讓一個Java程式設計師去學習Python,他可以很快的將Java中的學到的物件導向的知識map到Python中來,因此能夠快速掌握Python中物件導向的特性。
如果你是剛開始學習程式設計的新手,一本可靠的文法書是非常重要的。它看起來可能非常枯燥乏味,但對於建立穩固的程式設計思維是必不可少。
下面列出了一些適合初學者入門的教學材料:

❖「笨方法學Python」:http://learnpythonthehardway.org/book/
這本書在講解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的那些歷史麼?

因此,不要擔心自己走錯路誤了終身,堅持並保持進步才是正道。

起步階段的核心任務是掌握硬知識,軟知識做適當了解,有了穩固的根,粗壯的枝幹,才能長出濃密的葉子,結出甜美的果實。

2、發展階段

完成了基礎知識的學習,必定會感到一陣空虛,懷疑這些語法知識是不是真的有用。
沒錯,你的懷疑是非常正確的。要讓Python發揮出它的價值,當然不能停留在文法層面。
發展階段的核心任務,就是「跳出Python,擁抱世界」。
在你面前會有多個分支:科學計算和數據分析、爬蟲、Web網站、遊戲、命令列實用工具等等等等,這些都不是僅僅知道Python語法就能解決的問題。
拿爬蟲舉例,如果你對電腦網絡,HTTP協議,HTML,文字編碼,JSON一無所知,你能做好這部分的工作麼?而你在起步階段的基礎知識也同樣重要,如果你連循環遞歸怎麼寫都還要查文檔,連BFS都​​不知道怎麼實現,這就像工匠做石凳每次起錘都要思考錘子怎麼使用一樣,非常低效。
在這個階段,不可避免要接觸大量類庫,閱讀大量書籍的。

°1類別函式庫方面
「Awesome Python專案」:vinta/awesome-python · GitHub
這裡列出了你在嘗試解決各種實際問題時,Python社群已有的工具型類別庫,如下圖所示:

 如何有系統地自學Python 語言

你可以依照實際需求,尋找你需要的類別庫。
至於相關類別庫如何使用,必須掌握的技能便是閱讀文件。由於開源社群大多數文件都是英文寫成的,所以,英文不好的同學,需要惡補下。


°2書籍方面
這裡我只列出一些我覺得比較有一些幫助的書籍,詳細的請看豆瓣的書評:
科學和數據分析:
❖「集體智慧程式設計」:集體智慧程式設計 
「數學之美」:數學之美 
❖「統計學習方法」:統計學習方法 
❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning 
❖「資料科學實戰」:資料科學實務:資訊檢索導論 
爬蟲:
❖「HTTP 權威指南」:HTTP權威指南 
Web 網站:
❖「HTML & CSS 設計與建置網站」:HTML & CSS設計與建置網站 

... 

列到這裡已經不需要繼續下去了。
聰明的你一定會發現上面的大部分書籍,並不是講 Python 的書,而更多的是專業知識。
事實上,這裡所謂“跳出 Python,擁抱世界”,其實是發現 Python 和專業知識相結合,能夠解決很多實際問題。這個階段能走到什麼程度,更多的取決於自己的專業知識。   

3、 深入階段

這個階段的你,對 Python 幾乎瞭如指掌,那麼你一定知道 Python 是用 C 語言實現的。


可是 Python 物件的「動態特徵」是怎麼用相對底層,連自動記憶體管理都沒有的C語言實現的呢?這時候就不能停留在表面了,勇敢的拆開 Python 的黑盒子,深入到語言的內部,去看它的歷史,讀它的源碼,才能真正理解它的設計思路。

這裡推薦一本書:
「Python 源碼剖析」:Python源碼剖析 
這本書把Python 源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書需要對C 語言內存模型和指針有著很好的理解。

另外,Python 本身就是一門雜糅多種範式的動態語言,也就是說,相對於 C 的過程式、Schema 和 Haskell 等的函數式、Java 基於類別的物件導向而言,它都不夠純粹。換而言之,程式語言的“道學”,在 Python 中只能有限的體悟。學習某種程式設計範式時,從那些面向這種範式更純粹的語言出發,才能有更深刻的理解,也能了解到 Python 語言的根源。

這裡推薦一門公開課
「程式設計範式」:史丹佛大學公開課:程式設計範式
講師高屋建瓴,從各種程式設計範式的代表語言出發,給出了每種程式設計範式最核心的想法。

值得一提的是,這門課程對C語言有非常深入的講解,例如C語言的範型和記憶體管理。這些知識,對閱讀 Python 原始碼也有大有幫助。

Python 的許多最佳實踐都隱藏在那些眾所周知的框架和類別庫中,例如 Django、Tornado 等等。在它們的原始碼中淘金,也是個不錯的選擇。

¶ 最後的話
每個人學程式設計的道路都是不一樣的,其實大都殊途同歸,沒有迷路的人只有不能堅持的人。雖然聽起來有點雞湯,但這是事實。


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
學習Python:2小時的每日學習是否足夠?學習Python:2小時的每日學習是否足夠?Apr 18, 2025 am 12:22 AM

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Web開發的Python:關鍵應用程序Web開發的Python:關鍵應用程序Apr 18, 2025 am 12:20 AM

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優

Python vs.C:探索性能和效率Python vs.C:探索性能和效率Apr 18, 2025 am 12:20 AM

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

python在行動中:現實世界中的例子python在行動中:現實世界中的例子Apr 18, 2025 am 12:18 AM

Python在現實世界中的應用包括數據分析、Web開發、人工智能和自動化。 1)在數據分析中,Python使用Pandas和Matplotlib處理和可視化數據。 2)Web開發中,Django和Flask框架簡化了Web應用的創建。 3)人工智能領域,TensorFlow和PyTorch用於構建和訓練模型。 4)自動化方面,Python腳本可用於復製文件等任務。

Python的主要用途:綜合概述Python的主要用途:綜合概述Apr 18, 2025 am 12:18 AM

Python在數據科學、Web開發和自動化腳本領域廣泛應用。 1)在數據科學中,Python通過NumPy、Pandas等庫簡化數據處理和分析。 2)在Web開發中,Django和Flask框架使開發者能快速構建應用。 3)在自動化腳本中,Python的簡潔性和標準庫使其成為理想選擇。

Python的主要目的:靈活性和易用性Python的主要目的:靈活性和易用性Apr 17, 2025 am 12:14 AM

Python的靈活性體現在多範式支持和動態類型系統,易用性則源於語法簡潔和豐富的標準庫。 1.靈活性:支持面向對象、函數式和過程式編程,動態類型系統提高開發效率。 2.易用性:語法接近自然語言,標準庫涵蓋廣泛功能,簡化開發過程。

Python:多功能編程的力量Python:多功能編程的力量Apr 17, 2025 am 12:09 AM

Python因其簡潔與強大而備受青睞,適用於從初學者到高級開發者的各種需求。其多功能性體現在:1)易學易用,語法簡單;2)豐富的庫和框架,如NumPy、Pandas等;3)跨平台支持,可在多種操作系統上運行;4)適合腳本和自動化任務,提升工作效率。

每天2小時學習Python:實用指南每天2小時學習Python:實用指南Apr 17, 2025 am 12:05 AM

可以,在每天花費兩個小時的時間內學會Python。 1.制定合理的學習計劃,2.選擇合適的學習資源,3.通過實踐鞏固所學知識,這些步驟能幫助你在短時間內掌握Python。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境