天天看點

【01】Python:故事從這裡開始

寫在前面的話

最近在 Github 上面看到一個 100 天學習 Python 項目:

https://github.com/jackfrued/Python-100-Days

于是便想着抽時間将自己學習的東西再系統的整理一下,沉澱一下。切最近在學習 K8S,是以改系列部落格權當看累 K8S 之後緩解一下!

談談 Python

在說這個之前,我們先分析一下現在程式設計語言的趨勢,以下是 2019 年 5 月份 TIOBE 統計的程式設計語言排行榜:

【01】Python:故事從這裡開始

這裡可以簡單的關注一下兩個語言,一個是 Python,一個是 Go。

Python 現在居于第四位,前三地位難以撼動,這算是我們的一個優勢,但是也需要清楚的認知。

另外一個就是 Go,排行 19 而且還在掉,但并不能忽略它,原因很簡單,未來肯定是容器加 K8S 的時代,而這兩個都是基于 Go 開發。

包括前段時間被上傳到 Github 上面 bilibili 後端的源碼也是 Go 語言寫就。就連 Python 大廠知乎去年也傳出裁了大量 Python 程式員的傳言,且将很多中間件已經改為 Go 語言來重構。

是以我們得對現在時代發展的趨勢有個清楚的認知,這個語言是否需要再去學習。

當然,我個人是持保留态度的,因為我本身是運維,不屬于那種重度使用者,寫運維工具和平台很多時候其實是看心情,是以我覺得很适合我。

這并不意味着學 Python 的目的就是這個。之前 Github 上有人提 issue 給我,說他熟悉 Python 和 Django(Python 最火的 WEB 架構),想開發一個大型 WEB APP,但聽說 Python 很多地方不如 Java,是以在選 Python 或另外學 Java 而用 Java 上産生了迷茫。

我個人給的建議是:

首先,Java 确實是目前最好的選擇,完整的生态能夠解決我們很多問題,而且很多實作我們都可以找到現成的。但是我們也沒必要是以就放棄 Python,是以勸他還是根據需求選自己擅長的,這樣能夠更好的完成開發。

還是那句話,沒有垃圾的語言,隻有垃圾的程式員。人家牛逼到 shell 都能寫出叼的飛起的程式。是以,我選擇 Python 并未後悔,它是我第一門靠自己能夠寫出程式的語言,我依然記得跑起來第一個 demo 時候喜悅心情。

整個行業本身最大的特點就是不斷學習,不斷完善,是以,永遠年輕,永遠熱淚盈眶~ stay foolish,stay hungry!

Python 發展史

這是 Logo:

【01】Python:故事從這裡開始

該 Logo 源于作者喜歡的 Monty Python 喜劇團體,Python 就是大蟒蛇的意思。

學習一門語言,我們需要首先知道他的發展曆程,這是一切的基礎:

1. 1989 年聖誕節, Guido von Rossum(Python 之父,龜叔) 為打發無聊時間寫就。

2. 1991 年,第一個 Python 解釋器誕生。

3. 1994 年,Python 釋出 1.0,這意味着 Python 正式進入可以使用的穩定版。

4. 2000 年,釋出 2.0 版本,生态漸漸開始形成。

5. 2008 年,Python 3.0 版本釋出,這是重構以後的代碼。

現在主流版本屬于 Python 3 版本,當然很多老舊的系統可能是 Python 2 版本,2 版本終結于 2.7 版本,且在 2020 年将停止更新維護,這也是我們為啥使用 3 版本的原因,3 才是未來。

當然,對于我們使用者來說,2 版本和 3 版本在使用過程中變化其實不是太大。是以學了 3 再去看看相對于 2 的改動,你也能很快入手 2 版本。這裡便不做過多贅述。

另外,擺正心态,網上那種 7 天速成等亂七八糟的全是吹牛逼,除非他以前本身就是其他語言的牛逼人物。如果你不是,那就靜下心。

簡單談談關鍵優點:

1. 代碼優雅,明确,簡單,可讀性強。

2. 解釋型語言,能夠直接看到源碼(有利有弊)。

簡單談談關鍵缺點:

1. 執行效率低,但是認為感受不明顯,那是機器的事情。(這是主要的)

應用領域:

按理來說,都能使用,但是好或者壞的差別,推薦用于運維工具,系統,自動化測試,網絡爬蟲,可視化資料分析等等。當然 WEB 開發也是沒問題的,且架構很多。

語言解釋器:

所謂的語言解釋器就是将語言代碼編譯成機器能夠識别的語言的轉換工具,在 Python 中有幾個常常聽到的:

1. CPython:官方的,C語言開發,我們用的就是這個。

2. PyPy:使用 JIT 對代碼就行編譯,可提高代碼執行速度。

3. Jython:Java 寫的,将 Python 編譯成 Java 位元組碼。

至于其他,太冷門了,就不做多的解釋了,感興趣的可以自己去了解。

關于程式設計語言

編譯型和解釋型:

編譯型:将代碼編譯成二進制檔案,執行快,但相容性不行,如 C。

解釋型:執行時一條一條的編譯,執行慢,但靈活,如 Python,PHP。

動态語言和靜态語言:

動态語言:運作時采取檢驗資料類型,定義不用指定類型,如 Python。

靜态語言:定義時候需要指定資料類型,如 C,Java。

強類型和弱類型:

強類型:一旦指定類型,除非強制轉換,都在類型不變。

弱類型:資料類型可以忽略。

是以,Python 是一門動态解釋型強類型定義語言。

機器碼和位元組碼:

機器碼:機器能夠直接執行的,不需要編譯,也就是全是 01 組合,執行效率最高。

位元組碼:一種中間碼,二進制檔案,能夠轉義成機器碼,當然這也不是源碼。

編碼類型:

常見的編碼類型:ASCII,UTF8,Unicode,GBK 等。

ASCII: 英文字母加點特殊符号,一共 128 個字元,8 個二進制第一位隻能是 0,是以不是 256,如(01111111)

Unicode:世界上編碼很多,如果以一種編碼發送,再以另外一種編碼接收,于是就出現了亂碼。為了統一,于是便有了 Unicode,但是這也導緻英文字母也需要 3-4 個位元組,造成了資源浪費。

UTF8:相比于 Unicode,它屬于一種可變長度的編碼,可以節省空間。

GBK:中國國家編碼,通用性不如 UTF8,但是比 UTF8 省空間。

開發環境搭建

Python 版本(目前最新版本 3.7.3),下載下傳位址:

https://www.python.org/ftp/python/3.7.3/python-3.7.3.exe

開發工具,Pycharm 或者 VSCode:(新手推薦前者,簡單易用)

Pycharm 下載下傳位址,需要激活,網上有教程,當然也可以充錢:

https://download.jetbrains.8686c.com/python/pycharm-professional-2019.1.2.exe

VSCode 位址,免費:

https://vscode.cdn.azure.cn/stable/51b0b28134d51361cf996d2f0a1c698247aeabd8/VSCodeUserSetup-x64-1.33.1.exe

如果你用 VSCode 可以參考我之前關于搭建 Python 環境的部落格:

https://www.cnblogs.com/Dy1an/p/10130518.html

我的 Python 最終安裝位址是:D:\Python37

這裡為了保證我們最終安裝的服務一直都是純淨的,是以我們一直使用的環境都會是建立的虛拟環境:

【1】進入安裝目錄,安裝 virtualenv:我這裡是 D:\Python37\Scripts 目錄:

pip.exe install virtualenv      

結果如圖:

【01】Python:故事從這裡開始

安裝成功,但是提示我們 pip 版本過低,pip 是 Python 安裝依賴包的程式,是以可以更新一下它:

cd ..
python.exe -m pip install --upgrade pip      

值得注意的是,我們這裡運維并沒有将 Python 加入環境變量,是以我們所有指令其實都是絕對路徑使用的。

【01】Python:故事從這裡開始

【2】建立虛拟環境,我在 D 盤建立了一個目錄,叫做 study,之後我們所有操作都在那裡,我們也去這個目錄下建立我們的虛拟環境:

D:\Python37\Scripts\virtualenv.exe python37_env      
【01】Python:故事從這裡開始

結果如圖,我們建立了一個用于存放我們代碼的目錄,code:

【01】Python:故事從這裡開始

這樣以後我們如果覺得這個環境玩壞了,不用重新安裝 Python,重新建立一個虛拟環境就行了!

本身 Python 是自帶 IDE 的,既然我們裝了其它工具,當然就不它了。

開始

代碼:

import this      

運作結果:

【01】Python:故事從這裡開始

這就是傳說中的 Python 之禅~

我們的第一個程式:hello world

print("hello world")      

執行結果:

【01】Python:故事從這裡開始

注意,你們面闆配色可能和我不同,因為我用了額外的配上,如果你感興趣,可以檢視我們的另外一篇部落格:

https://www.cnblogs.com/Dy1an/p/10148154.html

小結

第一節就這些,主要談談 Python 的過去和現在未來,讓你确定自己是否真的需要學習他。另外環境安裝,工具這些并沒有詳講,感興趣的可以自己去看看。這些都是很簡單的基礎,随便學會。

當然,如果你實在有問題,也可以留言給我或者我部落格旁邊是有 QQ 的二維碼~