Python基礎教程,Python入門教程(非常詳細)


Python 英文本意為“蟒蛇”,直到 1989 年荷蘭人 Guido van Rossum (簡稱 Guido)發明了一種面向對象的解釋型編程語言(后續會介紹),並將其命名為 Python,才賦予了它表示一門編程語言的含義。



圖 1 Python 圖標


說道 Python,它的誕生是極具戲曲性的,據 Guido 的自述記載,Python 語言是他在聖誕節期間為了打發時間開發出來的,之所以會選擇 Python 作為該編程語言的名字,是因為 Guido 是一個叫 Monty Python 戲劇團體的忠實粉絲。

看似 Python 是“不經意間”開發出來的,但絲毫不比其它編程語言差。自 1991 年 Python 第一個公開發行版問世后,2004 年 Python 的使用率呈線性增長,不斷受到編程者的歡迎和喜愛;2010 年,Python 榮膺 TIOBE 2010 年度語言桂冠;2017 年,IEEE Spectrum 發布的 2017 年度編程語言排行榜中,Python 位居第 1 位。

直至現在(2019 年 6 月份),根據 TIOBE 排行榜的顯示,Python 也居於第 3 位,且有繼續提升的態勢(如表 2 所示)。

表 2 TIOBE 2019 年 6 月份編程語言排行榜(前 10 名)
Jun 2019 Jun 2018 Change Programming Language Ratings
1 1   Java 15.004%
2 2   C 13.300%
3 4 change Python 8.530%
4 3 change C++ 7.384%
5 6 change Visual Basic .NET 4.624%
6 5 change C# 4.483%
7 8 change JavaScript 2.716%
8 7 change PHP 2.567%
9 9   SQL 2.224%
10 16 change Assembly language 1.479%

Python語言的特點

相比其它編程語言,Python 具有以下特點。

1) Python簡單易學

“編程零基礎,可以學習 Python 嗎”,這是很多初學者經常問的一個問題。當然,計算機基礎越好,對學習任何一門新的編程語言越有利,但如果你在編程語言的學習上屬於零基礎,也完全不用擔心。

就我個人的觀點,Python 作為學習編程的入門語言是再合適不過的,相比其他編程語言(比如 Java),Python 最大的優勢就是非常容易上手。舉個簡單的例子,如果完成一個功能,使用 Java 實現需要 100 行代碼,那么使用 Python 可能只需要 20 行。

有人可能會問,將 C 語言作為入門語言不好嗎?就目前的就業形勢來說,僅掌握 C 語言是很難找到高薪的工作的,而掌握 Python 則不同。

並且,在使用其它編程語言編程時(例如 C、C++),你需要時刻注意數據類型、內存溢出、邊界檢查等問題。而 Python 則不用,因為在底層實現時,它已經幫你一一處理好了。

2) Python功能強大

Python 強大的功能是很多用戶支持 Python 的最重要的原因,從字符串處理到復雜的 3D 圖形編程,Python 借助擴展模塊都可以輕松完成。

實際上,Python 的核心模塊已經提供了足夠強大的功能,使用 Python 精心設計的內置對象可以完成許多功能強大的操作。

此外,Python 的社區也很發達,即使一些小眾的應用場景,Python 往往也有對應的開源模塊來提供解決方案。

3) Python是解釋型語言

編程語言按照程序的執行方式,可以分為編譯型和解釋型兩種,典型的編譯型語言有 C、C++ 等,而解釋型語言有 Java、Python 等。

相比編譯型語言,解釋型語言最大的優勢就是可移植性強。也就是說,Python 具有非常好的跨平台的特性。

4) Python是面向對象的編程語言

Python 既支持面向過程編程,也支持面向對象編程。在“面向過程”的語言中(如 C 語言),程序僅僅是由可重用代碼的函數構建起來的;而在“面向對象”的語言(如 C++)中,程序是由數據和功能組合而成的對象構建起來的。

而且和其它面向對象的編程語言(如 C++ 和 Java)相比,Python 是以一種非常強大,而又簡單的方式實現的面向對象編程。

除此之外,Python 還有開源、有良好的可擴展性等特點。基於以上這些特性,Python 廣泛應用在人工智能、圖像處理、Web應用開發、自動化運維、網絡爬蟲等領域。

Python版本的選擇

Python 自發布以來,共歷經了 3 個大的版本,分別是:

  1. 1994 年發布的 Python 1.0 版本(已過時);
  2. 2000 年發布的 Python 2.0 版本,截止到 2019 年 3 月份,已經更新到 2.7.16;
  3. 2008 年發布的 Python 3.0 版本,截止到 2019 年 3 月份,已經更新到 3.7.3;


3 個版本中,Python 3.0 是一次重大的升級,為了避免引入歷史包袱,Python 3.0 沒有考慮與 Python 2.x 的兼容,這也就導致很長時間以來,Python 2.x 的用戶不願意升級到 Python 3.0。

除此之外,造成目前這種狀況的另一個原因是,將現有應用從 Python 2.x 遷移到 Python 3.x 是一項不小的挑戰。雖然有 2to3(后續會介紹)之類的工具可以進行代碼的自動轉換,但無法保證轉換后的代碼 100% 正確。而且,如果不做人工修改的話,轉換后的代碼性能可能還不如轉換前。因此,將現有的復雜代碼庫遷移到 Python 3.x 上可能需要付出巨大的精力和成本,某些公司無法負擔這些成本。

目前,根據統計顯示,使用 Python 2.x 的開發者仍占 63.7%,而Python 3.x 的用戶占 36.3%,由此可見,使用 Python 2.x 的用戶還是占多數。在 2014 年,Python 創始人宣布,將 Python 2.7 支持時間延長到 2020 。

那么,初學者應該選擇什么版本呢?這里建議大家選擇 Python 3.x 版本,理由有以下幾點:

  • 使用 Python 3.x 已經是大勢所趨
    目前,雖然使用 Python 2.x 的開發者居多,但使用 Python 3.x 的開發者正在迅速增加,如圖 1 所示:

    Python 3.x 是大勢所趨
    圖 1 Python 3.x 是大勢所趨
     
    另外,根據 PEP-404 這份文檔,Python 2.x 版本將不會再發布 2.8 版本,且未來非常重要的項目(如 Django、Flask 和 Numpy)可能都將放棄對 2.x 的支持,僅支持 Python 3.x。因此,從長遠來看,學習 Python 3.x 只有好處。
  • Python 3.x在 Python 2.x 的基礎上做了功能升級
    Python 3.x 對 Python 2.x 的標准庫進行了一定程序的重新拆分和整合,比 Python 2.x 更容易理解,特別是在字符編碼方面。Python 2.x 中對於中文字符串的支持性能不夠好,需要編寫單獨的代碼對中文進行處理,否則不能正確顯示中文,而 Python 3.x 已經將該問題成功解決了。
  • Python 3.x 和 Python 2.x 思想基本是共通的
    Python 3.x 和 Python 2.x 思想基本上是共通的,只有少量的語法差別,學會的 Python 3.x,只要稍微花點時間學習 Python 2.x 的語法,即可靈活運用這兩個不同版本了。
     

注意,選擇 Python 3.x 也不是沒有弊端,很多擴展庫的發行總是會滯后於 Python 的發行版本,甚至目前還有很多庫不支持 Python 3.x。

因此,在選擇 Python 時,一定要先考慮清楚自己的學習目的,比如說,打算做哪方面的開發,此方向需要用法哪些擴展庫,以及這些擴展庫支持的最高 Python 版本等,明確這些問題后,再選擇適合自己的版本。

關於 Python 3.x 和 Python 2.x 具體的區別,可閱讀《Python 3 和 Python 2 區別》一節。

初學者應該如何學習Python?

對於初學者來說,要做的就是專注於 Python 這一門語言,明確學習的重點,把握好學習節奏,由淺入深循序漸進地學習。根據本人多年的學習工作經驗,把編程語言的學習分為以下 3 步,無論你是否有編程基礎,都可以對照着來做。

1) 多實踐,積累代碼量

任何一門編程語言,其囊括的知識面都是非常廣泛的,從基本的變量賦值、條件循環、到文件操作、並發編程等。但是,千萬不要等到把所有知識點都學完了才開始練習,因為到那時你會發現,前面好不容易記住的知識都忘記了。

學習編程,是十分講究實戰的,沒有捷徑可走,越早練習,練得越多越勤,學習效果就越好。

2) 時刻注意代碼規范

學習編程語言,在追求快和高效的同時,每一種編程語言都有必要的編碼規范,一定不能忽略。

要想成為一名優秀的程序員,從起步階段就要刻意地去培養自己的編程規范。例如,在剛開始編寫代碼時,不要將原本多行的代碼全部寫到一行,也不要隨便用 a、b、c 等字母作為變量的名稱。

3) 開發經驗是必不可少的

要想真正熟練地掌握 Python(或者其它編程語言),擁有大中型產品的開發經驗是必不可少的,它會讓你站得更高,望得更遠。

例如,我們幾乎每天都會用搜索引擎,但你了解一個搜索引擎的服務器端實現嗎?這是一個典型的面向對象設計,需要定義一系列相關的類和函數,還要從產品需求、代碼復雜度、效率以及可讀性等多個方面綜合考量,同時在上線后還要進行各種優化等。

為了輔助大家更好地學習 Python,這里准備了一章 Python 學習的知識圖譜,涵蓋了 Python 的核心知識。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM