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

寫在前面的話html

 

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

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

因而便想着抽時間將本身學習的東西再系統的整理一下,沉澱一下。切最近在學習 K8S,因此改系列博客權當看累 K8S 以後緩解一下!程序員

 

 

談談 Pythongithub

 

在說這個以前,咱們先分析一下如今編程語言的趨勢,如下是 2019 年 5 月份 TIOBE 統計的編程語言排行榜:shell

這裏能夠簡單的關注一下兩個語言,一個是 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:

該 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 環境的博客:

http://www.noobyard.com/article/p-bjnikxoy-cm.html

個人 Python 最終安裝地址是:D:\Python37

這裏爲了保證咱們最終安裝的服務一直都是純淨的,因此咱們一直使用的環境都會是新建的虛擬環境:

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

pip.exe install virtualenv

結果如圖:

安裝成功,可是提示咱們 pip 版本太低,pip 是 Python 安裝依賴包的程序,因此能夠升級一下它:

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

值得注意的是,咱們這裏運維並無將 Python 加入環境變量,因此咱們全部命令其實都是絕對路徑使用的。

 

【2】建立虛擬環境,我在 D 盤創建了一個目錄,叫作 study,以後咱們全部操做都在那裏,咱們也去這個目錄下建立咱們的虛擬環境:

D:\Python37\Scripts\virtualenv.exe python37_env

結果如圖:

結果如圖,咱們新建了一個用於存放咱們代碼的目錄,code:

這樣之後咱們若是以爲這個環境玩壞了,不用從新安裝 Python,從新建立一個虛擬環境就好了!

自己 Python 是自帶 IDE 的,既然咱們裝了其它工具,固然就不它了。

 

 

開始

 

代碼:

import this

運行結果:

這就是傳說中的 Python 之禪~

 

咱們的第一個程序:hello world

代碼:

print("hello world")

 

執行結果:

注意,大家面板配色可能和我不一樣,由於我用了額外的配上,若是你感興趣,能夠查看咱們的另一篇博客:

http://www.noobyard.com/article/p-xkoqdkne-ek.html

 

 

小結

 

第一節就這些,主要談談 Python 的過去和如今將來,讓你肯定本身是否真的須要學習他。另外環境安裝,工具這些並無詳講,感興趣的能夠本身去看看。這些都是很簡單的基礎,隨便學會。

固然,若是你實在有問題,也能夠留言給我或者我博客旁邊是有 QQ 的二維碼~