Python從入門到轉行

逺方小鎭發表於2019-02-16

題記:大二的時候發現人生苦短,所以信了拍神,開始學Python。學了大半年之後成功轉行做前端了。來寫個教程幫助大家入門Python。

Python零基礎入門

零基礎入門就得從最基本的變數,語法格式,資料型別,函式,作用域,模組等基本知識入手(有程式設計基礎基礎也得這麼來)

和籃球一樣,先來三步上籃:

  1. Python基礎知識入門,從程式基礎開始學,能看懂程式碼就可以了。三種選擇:
    第一種:找一本Python入門教程書,比如《Head First Python 中文版 》《笨辦法學Python 》《簡明 Python 教程》。Head First系列書籍都非常簡單易懂,適合文科生看,從最基本的東西講起,有程式設計基礎的同學看著會覺得幼稚。另外兩本都是普通入門書,隨便選。一些Python相關電子書下載, 密碼: yjw3。
    第二種:看網站入門教程,很多人推薦的廖雪峰Python教程
    第三種:視訊教程,推薦慕課網。其他還有網易雲課堂,學堂線上(這個裡邊大學課程比較多)
  2. 學寫一些基本的Python程式,上述《簡明 Python 教程》後邊的示例可以做。想更進一步掌握基礎,可以做一點leetcode easy題目練練手。(看個人情況唄,反正我是沒那個耐心,做題實在太枯燥,雖然寫題是很有好處的)
  3. 做一些感興趣的小專案,這裡有Python習題100例,很基礎。覺得不夠高大上可以玩實驗樓裡的專案,實驗樓是個不錯的網站,可以做一些很好玩的東西。

以上三步可以讓你21天精通Python喲

Tips:推薦一個神器,Python執行視覺化,可以一步步檢視程式執行狀態,變數狀態,函式呼叫,記憶體分配,對於理解變數生命週期,作用域,除錯理解程式非常有幫助。
開發工具:推薦Pycharm,有免費社群版,也可用edu郵箱註冊專業版。

Python進階篇

進階就是專注於Python的某個領域做深入研究了,Python主要包含了AI領域(NLP,深度學習,影像處理啥的,反正無所不能),Web開發(後端服務,爬蟲),資料處理(資料分析,科學計算),工具(比如讀寫Excel,編寫自動化指令碼),桌面開發(GUI工具)等等。
Python好強大啊,我又想寫Python了。

下面簡單寫寫我知道的領域的入門:

Web開發

Python Web框架眾多,是建網站的利器。對於建立不太複雜的CMS系統(比如新聞網站,部落格網站),Django強到沒朋友,開發效率無敵。對於注重靈活性的網站,Flask可以作為首選,靈活而小巧,非常優雅的框架。

  1. Django入門先看官方文件,瞭解基本概念。然後開始做實際專案,比如Django開發部落格系統教程
  2. Flask入門看官方文件,同Django。

爬蟲(網路資料獲取)

先科普,網路爬蟲,可以理解為在網路上爬行的一直蜘蛛,網際網路就比作一張大網,而爬蟲便是在這張網上爬來爬去的蜘蛛,如果它遇到資源,那麼它就會抓取下來。比如它在抓取一個網頁,在這個網中他發現了一條道路,其實就是指向網頁的超連結,那麼它就可以爬到另一張網上來獲取資料。簡單地說,利用程式從網頁上獲取你想要的資料。
Python的爬蟲框架非常多,也非常好用。
入門步驟:

  1. 理解網頁是怎麼構成的
    網頁的基本知識包括:
    基本的HTML語言知識
    理解網站的發包和收包的概念(POST GET)
    稍微一點點的js知識,用於理解動態網頁
  2. 解析網頁,這裡需要學習正規表示式
  3. 選取一個爬蟲框架,比如自帶的urllib,request,bs4等等
  4. 看官方文件,如何使用框架,然後就可以養一隻爬蟲咯。

教程點這裡

資料處理

上邊爬蟲講到如何獲取資料,這裡將學習如何分析處理資料,教程連結
科學計算,資料處理用到比較多的是matlab,無所不能的Python當然也可以替代它。
numpy pandas是科學運算當中最為重要的兩個模組。Matplotlib 是一個非常強大的 Python 資料視覺化工具,繪製各種圖形。

  1. 看官網文件,理解這個庫的基本用法。
  2. 學習一些簡單的專案,上文提到的實驗樓也可以用

AI領域


從別處引用一點基本介紹

  1. Theano 是一種用於使用數列來定義和評估數學表達的 Python 庫。它可以讓 Python 中深度學習演算法的編寫更為簡單。
  2. Keras 是類似 Torch 的一個精簡的,高度模組化的神經網路庫。Theano 在底層幫助其優化 CPU 和 GPU 執行中的張量操作。
  3. Pylearn2 是一個引用大量如隨機梯度(Stochastic Gradient)這樣的模型和訓練演算法的庫。它在深度學習中被廣泛採用,這個庫也是以 Theano 為基礎的。
  4. Lasagne 是一個輕量級的庫,它可以在 Theano 中建立和訓練神經網路。它簡單、透明、模組化、實用、專一而剋制。
  5. Blocks 是一種幫助你在 Theano 之上建立神經網路模型的框架。
  6. Caffe 是一種以表達清晰、高速和模組化為理念建立起來的深度學習框架。它是由伯克利視覺和學習中心(BVLC)和網上社群貢獻者共同開發的。谷歌的 DeepDream 人工智慧影像處理程式正是建立在 Caffe 框架之上。這個框架是一個 BSD 許可的帶有 Python 介面的 C++庫。
  7. nolearn 包含大量其他神經網路庫中的包裝器和抽象(wrappers and abstractions),其中最值得注意的是 Lasagne,其中也包含一些機器學習的實用模組。
  8. Genism 是一個部署在 Python 程式語言中的深度學習工具包,用於通過高效的演算法處理大型文字集。
  9. 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()

相關文章