題記:大二的時候發現人生苦短,所以信了拍神,開始學Python。學了大半年之後成功轉行做前端了。來寫個教程幫助大家入門Python。
Python零基礎入門
零基礎入門就得從最基本的變數,語法格式,資料型別,函式,作用域,模組等基本知識入手(有程式設計基礎基礎也得這麼來)
和籃球一樣,先來三步上籃:
- Python基礎知識入門,從程式基礎開始學,能看懂程式碼就可以了。三種選擇:
第一種:找一本Python入門教程書,比如《Head First Python 中文版 》《笨辦法學Python 》《簡明 Python 教程》。Head First系列書籍都非常簡單易懂,適合文科生看,從最基本的東西講起,有程式設計基礎的同學看著會覺得幼稚。另外兩本都是普通入門書,隨便選。一些Python相關電子書下載, 密碼: yjw3。
第二種:看網站入門教程,很多人推薦的廖雪峰Python教程
第三種:視訊教程,推薦慕課網。其他還有網易雲課堂,學堂線上(這個裡邊大學課程比較多) - 學寫一些基本的Python程式,上述《簡明 Python 教程》後邊的示例可以做。想更進一步掌握基礎,可以做一點leetcode easy題目練練手。(看個人情況唄,反正我是沒那個耐心,做題實在太枯燥,雖然寫題是很有好處的)
- 做一些感興趣的小專案,這裡有Python習題100例,很基礎。覺得不夠高大上可以玩實驗樓裡的專案,實驗樓是個不錯的網站,可以做一些很好玩的東西。
以上三步可以讓你21天精通Python喲
Tips:推薦一個神器,Python執行視覺化,可以一步步檢視程式執行狀態,變數狀態,函式呼叫,記憶體分配,對於理解變數生命週期,作用域,除錯理解程式非常有幫助。
開發工具:推薦Pycharm,有免費社群版,也可用edu郵箱註冊專業版。
Python進階篇
進階就是專注於Python的某個領域做深入研究了,Python主要包含了AI領域(NLP,深度學習,影像處理啥的,反正無所不能),Web開發(後端服務,爬蟲),資料處理(資料分析,科學計算),工具(比如讀寫Excel,編寫自動化指令碼),桌面開發(GUI工具)等等。
Python好強大啊,我又想寫Python了。
下面簡單寫寫我知道的領域的入門:
Web開發
Python Web框架眾多,是建網站的利器。對於建立不太複雜的CMS系統(比如新聞網站,部落格網站),Django強到沒朋友,開發效率無敵。對於注重靈活性的網站,Flask可以作為首選,靈活而小巧,非常優雅的框架。
- Django入門先看官方文件,瞭解基本概念。然後開始做實際專案,比如Django開發部落格系統教程
- Flask入門看官方文件,同Django。
爬蟲(網路資料獲取)
先科普,網路爬蟲,可以理解為在網路上爬行的一直蜘蛛,網際網路就比作一張大網,而爬蟲便是在這張網上爬來爬去的蜘蛛,如果它遇到資源,那麼它就會抓取下來。比如它在抓取一個網頁,在這個網中他發現了一條道路,其實就是指向網頁的超連結,那麼它就可以爬到另一張網上來獲取資料。簡單地說,利用程式從網頁上獲取你想要的資料。
Python的爬蟲框架非常多,也非常好用。
入門步驟:
- 理解網頁是怎麼構成的
網頁的基本知識包括:
基本的HTML語言知識
理解網站的發包和收包的概念(POST GET)
稍微一點點的js知識,用於理解動態網頁 - 解析網頁,這裡需要學習正規表示式
- 選取一個爬蟲框架,比如自帶的urllib,request,bs4等等
- 看官方文件,如何使用框架,然後就可以養一隻爬蟲咯。
資料處理
上邊爬蟲講到如何獲取資料,這裡將學習如何分析處理資料,教程連結。
科學計算,資料處理用到比較多的是matlab,無所不能的Python當然也可以替代它。
numpy pandas是科學運算當中最為重要的兩個模組。Matplotlib 是一個非常強大的 Python 資料視覺化工具,繪製各種圖形。
- 看官網文件,理解這個庫的基本用法。
- 學習一些簡單的專案,上文提到的實驗樓也可以用
AI領域
略
從別處引用一點基本介紹
- Theano 是一種用於使用數列來定義和評估數學表達的 Python 庫。它可以讓 Python 中深度學習演算法的編寫更為簡單。
- Keras 是類似 Torch 的一個精簡的,高度模組化的神經網路庫。Theano 在底層幫助其優化 CPU 和 GPU 執行中的張量操作。
- Pylearn2 是一個引用大量如隨機梯度(Stochastic Gradient)這樣的模型和訓練演算法的庫。它在深度學習中被廣泛採用,這個庫也是以 Theano 為基礎的。
- Lasagne 是一個輕量級的庫,它可以在 Theano 中建立和訓練神經網路。它簡單、透明、模組化、實用、專一而剋制。
- Blocks 是一種幫助你在 Theano 之上建立神經網路模型的框架。
- Caffe 是一種以表達清晰、高速和模組化為理念建立起來的深度學習框架。它是由伯克利視覺和學習中心(BVLC)和網上社群貢獻者共同開發的。谷歌的 DeepDream 人工智慧影像處理程式正是建立在 Caffe 框架之上。這個框架是一個 BSD 許可的帶有 Python 介面的 C++庫。
- nolearn 包含大量其他神經網路庫中的包裝器和抽象(wrappers and abstractions),其中最值得注意的是 Lasagne,其中也包含一些機器學習的實用模組。
- Genism 是一個部署在 Python 程式語言中的深度學習工具包,用於通過高效的演算法處理大型文字集。
- CXXNET 是一種快速,簡明的分散式深度學習框架,它以 MShadow 為基礎。它是輕量級可擴充套件的 C++/CUDA 神經網路工具包,同時擁有友好的 Python/Matlab 介面,可供機器學習的訓練和預測使用。
這裡包含的東西太多了,基本學習方法如上。
給一個比較全的Python視訊課程
連結:https://pan.baidu.com/s/1htRyqtY 密碼:nc1f
附錄:
先來看看Python有多強大,不然不能被它所吸引,就學不下去了。
20行程式碼實現人臉檢測與識別:
face_recognition可以通過python或者命令列即可實現人臉識別的功能。使用dlib深度學習人臉識別技術構建,在戶外臉部檢測資料庫基準(Labeled Faces in the Wild)上的準確率為99.38%。
# 匯入識別庫
import face_recognition
# 載入已有的圖片作為影像庫
known_obama_image = face_recognition.load_image_file("face1.jpg")
known_biden_image = face_recognition.load_image_file("face_kid.jpg")
# 編碼載入的圖片
obama_face_encoding = face_recognition.face_encodings(known_obama_image)[0]
biden_face_encoding = face_recognition.face_encodings(known_biden_image)[0]
known_encodings = [
obama_face_encoding,
biden_face_encoding
]
# 載入要識別的圖片並編碼
image_to_test = face_recognition.load_image_file("face2.jpg")
image_to_test_encoding = face_recognition.face_encodings(image_to_test)[0]
# 計算該圖片與已有圖片的差別值
face_distances = face_recognition.face_distance(known_encodings, image_to_test_encoding)
# 自行設定同一張面孔的分界值,輸出比對結果
for i, face_distance in enumerate(face_distances):
print("The test image has a distance of {:.2} from known image #{}".format(face_distance, i))
print("- With a normal cutoff of 0.6, would the test image match the known image? {}".format(face_distance < 0.6))
print("- With a very strict cutoff of 0.5, would the test image match the known image? {}".format(face_distance < 0.5))
print()