【Python入門教程01】Python 到底是幹什麼的?應該怎麼入門?

♩-♪-♫-♬ 原創文章,歡迎正常授權轉載(請聯繫作者),反對惡意複製粘貼,如有發現必維權 ♩-♪-♫-♬

隨着人工智能的火熱,Python越來越受到關注,越來越多的人加入到Python學習中。相信如果有教程的“加持”話,絕大部分人學會肯定不是什麼大的問題。最怕的是自己一開始就學錯了方向,浪費了大把大把的時間。
舉個例子,你最開始是學習Python來進行人工智能開發,教程前半部分講的是基本語法等等,完全符合需求,結果後半部分卻是針對web開發的。這個問題真的很普遍,尤其是對於剛剛入門的小白來說,很多人都學完了都沒反應過來。

我遇到很多人就是這個情況。

小白:我想學習Python,以後搞人工智能,現在很火的

:很好呀,有很多教程書籍,上手很快的。

。。。

過了2周,小白學的是真的快,直到他問了我一個問題,我意識到了問題

小白:誒~師兄,那個Django我怎麼裝不上呀?這書是不是寫的不對呀?你幫我看看唄。

:你不是要學人工智能嗎?怎麼改web開發了呢?。。。

小白:這些不是人工智能必須的???

爲什麼要在寫這個系列教程開始前,強調這個問題呢?因爲實際的經歷告訴我這個真的很重要。把握住學習的關鍵點能節省大量的精力來加深我們真正關注的研究。因此,推薦想要學習Python的小白仔細研究一下自己想要學什麼,有方向有目的的去學。

個人認爲最快速最高效的Python學習方法:

  • 確定開發方向,這也是本文的目的。
  • 學習基本語法,只需瞭解基本語法、數據結構,能夠分清代碼中的各個區塊,其他不作深入研究。
  • 上手實踐項目,一個項目一個項目的學習,此時遇到不懂的語法問題、數據結構問題再詳細的瞭解學習。

下面進入今天的正題。

1. 什麼是Python?有什麼特點?

Python 是一種解釋型面向對象動態數據類型高級程序設計語言

  • 解釋型:相對於編譯型語言(C語言、C++等)存在的,源代碼不是直接翻譯成機器語言,而是先翻譯成中間代碼,再由解釋器對中間代碼進行解釋運行。通俗的講就是“邊翻譯邊執行”,因此效率相對低,但跨平臺性更好。

  • 面向對象:相對於面向過程語言(C語言)存在的,面嚮對象語言的代碼複用性更高,代碼管理維護更簡單。

  • 動態數據類型:相對於靜態數據語言(C++等)存在的,靜態類型語言中,變量具有類型,而且在編譯期確定,具有某一類型的變量只能持有相同類型的數據。動態類型語言中,變量沒有類型,只有數據有類型,變量可以持有任意類型的數據,只有在運行的時候才知道數據的真實類型,優點:更加靈活多變。

  • 高級程序設計語言:面向用戶的、基本獨立於硬件環境外的程序設計語言。Python語言相對於C++等更“高級”,可讀性更好,開發效率也更高,完成同一個任務,C語言要寫1000行代碼,Java只需要寫100行,而Python可能只要20行,但代價就是Python執行效率相對較低。

2.Python可以做什麼?

上面這張圖片將Python開發的主要方向羅列了一下,Python主要用於以下幾個方向的開發:

(1)人工智能

得益於Python良好的開發效率及大量開源的人工智能開發框架,Python在人工智能領域的應用可以說是壟斷性的;大部分的研究機構和公司在開發過程中都使用Python。
在這裏插入圖片描述
如果致力於人工智能方面的學習,需要注意目前人工智能主要在計算機視覺、自然語言處理以及數據挖掘三大領域具有較好的應用,學習的時候建議挑選一個領域學習,如果都感興趣,那還是基本瞭解一個之後再研究其他的。這裏給大家推薦一些後期學習的Python庫:

  • numpy ---- 主要用於數據處理,包括大型矩陣運算等。
    中文文檔:https://www.numpy.org.cn
  • TensorFlow ---- 谷歌開發的基於靜態計算圖的人工智能算法庫,2.0後支持動態圖。
    中文社區:http://www.tensorfly.cn
  • PyTorch ---- Facebook開發的基於動態計算圖的人工智能算法庫,與TensorFlow並稱“雙雄”,建議挑一個學。
    官方中文文檔:https://pytorch.apachecn.org
  • Paddle ---- 百度開發的“飛槳”,優點是全中文文檔,感興趣可以研究一下。
    官方文檔:https://www.paddlepaddle.org.cn
  • opencv ---- 開源圖像處理庫,如果研究圖像處理方面的人工智能,那基本繞不過它了。
    官方英文文檔:https://docs.opencv.org

(2)數據分析與處理

現在比較受歡迎的數據分析與處理語言是Java與Python,Java在大數據處理方面還是比較傾向軟件應用與網站數據,包括遊戲數據處理,特別是金融服務數據處理,一直都是Java的強項;Python有着衆多免費科學算法庫,優勢在人工智能大數據處理,當然也有使用Python在銀行的基礎架構中處理財務數據。
在這裏插入圖片描述

由於本人對大數據爬取及分析處理不甚瞭解,這裏不介紹大數據處理方面的內容,這裏僅簡單介紹一些日常學習研究過程中用到的數據處理及可視化的Python庫。

  • numpy ---- 上文已介紹。
  • pandas ---- 一種 "表格式"數據管理計算庫,Pandas是一個強大的分析結構化數據的工具集;它的使用基礎是Numpy(提供高性能的矩陣運算);用於數據挖掘和數據分析,同時也提供數據清洗功能。
    中文手冊:https://www.pypandas.cn
  • matplotlib ---- 一個Python 2D繪圖庫,廣泛應用於數據的可視化。
    中文手冊:https://www.matplotlib.org.cn

(3)Web開發

Python超高的開發效率使得其也非常適合web開發,Python有上百種Web開發框架,有很多成熟的模板技術,這裏簡要介紹幾種。

  • Django ---- “Web框架界的變形金剛”,Django的MVT架構、自帶ORM、強大的Admin後臺管理、自帶數據庫、還自帶開發測試用的服務器、不得不說服務周到。如此大而全,重量級的Django給開發者提供了超高的開發效率。

  • Flask ---- 相較於Django ,Falsk屬於輕量級Web框架,特點是自由、靈活、可擴展性很強。很適用於開發小型應用、開發大型網站也沒有壓力,自己設計架構、選擇合適第三方擴展,各方面性能完全不輸Django。

  • Tornado ---- 全稱是Torado Web Server,可用作Web服務器,同時也是一個Python Web的開發框架。Tornado 走的少而精的路子,除了Web開發需要的基本模塊,剩下的則都需要開發者自己擴展。

(4)可視化桌面軟件

相較於C++,Python執行效率相對較低,可視化並不是Python的強項,但並不是說Python就完全不適合作爲可視化軟件的開發,對於計算量不大、時間不敏感的需求,Python是一個不錯的選擇。例如,在科學研究過程中,可視化的桌面軟件有着巨大的作用,良好的用戶可視化可以大幅提高研究效率,減少過程中不必要的錯誤,而Python上手簡單開發效率高,研究人員可以使用Python快速搭建可視化的桌面軟件實現自己的需求。

這裏介紹一款功能強大,上手極快的可視化開發Python包:

  • PyQt ---- Qt的Python版本,與C++版的Qt在函數的使用方法上基本一致。有PyQt4及PyQt5的區別,個人建議使用PyQt5。優點:底層實現基於C++,擁有很高的執行效率,可以輕鬆滿足研究過程中的基本需求;其次是它有很多通用工具可以使用,可大大提高開發效率。
    官方文檔:https://doc.qt.io

下圖就是我在做攝像機標定研究時開發的一個可視化桌面軟件。
在這裏插入圖片描述

(5)其他用途

除去上述的主要用途,Python在其他領域也有着重要的應用。其極高的開發效率,使得使用者可以快速實現自己的需求。在開展一些簡單的重複性工作時,可以使用Python大幅提高勞動率,例如:大量的文本及表格數據處理。

如果你讀後有收穫,歡迎關注我的微信公衆號
上面有更多完全免費教程,我也會不定期更新
ღ ღ ღ 打開微信掃描下方二維碼關注 ღ ღ ღ

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章