1. 程式人生 > >Python 介紹及環境安裝部署

Python 介紹及環境安裝部署

1. Python 介紹
1.1 Python 的前世今生
Python 的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的指令碼解釋程式,作為ABC語言的一種繼承。
最新的 TIOBE 排行榜,Python 趕超PHP佔據第四!!!
Python整體呈上升趨勢,反映出Python應用越來越廣泛並且也逐漸得到業內的認可!!!
Python可以應用於眾多領域,如:資料分析、元件整合、網路服務、影象處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型網際網路企業都在使用 Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。網際網路公司廣泛使用Python來做的事一般有:自動化運維、自動化測試、大資料分析、爬蟲、Web 等。


1.2 為什麼是Python而不是其他語言
1.2.1 C 和 Python、Java、C# 等
C語言: 程式碼編譯得到 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工作
其他語言: 程式碼編譯得到 位元組碼 ,虛擬機器執行位元組碼並轉換成機器碼再後在處理器上執行
Python 和 C Python這門語言是由C開發而來。
對於使用:Python的類庫齊全並且使用簡潔,如果要實現同樣的功能,Python 10行程式碼可以解決,C可能就需要100行甚至更多.
對於速度:Python 的執行速度相較與 C,絕逼是慢了。
1.2.2 Python 和 Java、C#等
對於使用:Linux原裝Python,其他語言沒有;以上幾門語言都有非常豐富的類庫支援

對於速度:Python在速度上可能稍顯遜色
所以,Python和其他語言沒有什麼本質區別,其他區別在於:擅長某領域、人才豐富、先入為主。
1.3 Python 的種類
1.3.1 Cpython
Python的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將原始檔(py檔案)轉換成位元組碼檔案(pyc檔案),然後執行在Python虛擬機器上。
1.3.2 Jyhton
Python的Java實現,Jython會將Python程式碼動態編譯成Java位元組碼,然後在JVM上執行。
1.3.3 IronPython
Python的C#實現,IronPython將Python程式碼編譯成C#位元組碼,然後在CLR上執行。(與Jython類似)

1.3.4 PyPy(特殊)
Python實現的Python,將Python的位元組碼位元組碼再編譯成機器碼。在Python的基礎上對Python的位元組碼進一步處理,從而提升執行速度!
除了以上還有 RubyPython、Brython 等等。
1.4 Python的優缺點
1.4.1 先看優點
Python的定位是“優雅”、“明確”、“簡單”,所以Python程式看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程式。
開發效率非常高,Python有非常強大的第三方庫,基本上你想通過計算機實現任何功能,Python官方庫裡都有相應的模組進行支援,直接下載呼叫後,在基礎庫的基礎上再進行開發,大大降低開發週期,避免重複造輪子。
高階語言————當你用Python語言編寫程式的時候,你無需考慮諸如如何管理你的程式使用的記憶體一類的底層細節
可移植性————由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工 作在不同平臺上)。如果你小心地避免使用依賴於系統的特性,那麼你的所有Python程式無需修改就幾乎可以在市場上所有的系統平臺上執行。
可擴充套件性————如果你需要你的一段關鍵程式碼執行得更快或者希望某些演算法不公開,你可以把你的部分程式用C或C++編寫,然後在你的Python程式中使用它們。
可嵌入性————你可以把Python嵌入你的C/C++程式,從而向你的程式使用者提供指令碼功能。
1.4.2 再看缺點
速度慢,Python 的執行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑於使用Python的主要原因,但其實這裡所指的執行速度慢在大多數情況下使用者是無法直接感知到的,必須藉助測試工具才能體現出來,比如你用C運一個程式花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非常誇張了,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數情況下Python已經完全可以滿足你對程式速度的要求,除非你要寫對速度要求極高的搜尋引擎等,這種情況下,當然還是建議你用C去實現的。
程式碼不能加密,因為PYTHON是解釋性語言,它的原始碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的專案要求原始碼必須是加密的,那你一開始就不應該用Python來去實現。
執行緒不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全域性直譯器鎖(Global Interpreter Lock),是計算機程式設計語言直譯器用於同步執行緒的工具,使得任何時刻僅有一個執行緒在執行,Python的執行緒是作業系統的原生執行緒。在Linux上為pthread,在Windows上為Win thread,完全由作業系統排程執行緒的執行。一個python直譯器程序內有一條主執行緒,以及多條使用者程式的執行執行緒。即使在多核CPU平臺上,由於GIL的存在,所以禁止多執行緒的並行執行。關於這個問題的折衷解決方法,我們在以後執行緒和程序章節裡再進行詳細探討。
當然,Python還有一些其它的小缺點,在這就不一一列舉了,我想說的是,任何一門語言都不是完美的,都有擅長和不擅長做的事情,建議各位不要拿一個語言的劣勢去跟另一個語言的優勢來去比較,語言只是一個工具,是實現程式設計師思想的工具,就像我們之前中學學幾何時,有的時候需要要圓規,有的時候需要用三角尺一樣,拿相應的工具去做它最擅長的事才是正確的選擇。之前很多人問我Shell和Python到底哪個好?我回答說Shell是個指令碼語言,但Python不只是個指令碼語言,能做的事情更多,然後又有鑽牛角尖的人說完全沒必要學Python, Python能做的事情Shell都可以做,只要你足夠牛B,然後又舉了用Shell可以寫俄羅斯方塊這樣的遊戲,對此我能說表達只能是,不要跟SB理論,SB會把你拉到跟他一樣的高度,然後用充分的經驗把你打倒。
1.5 Python直譯器
當我們編寫 Python 程式碼時,我們得到的是一個包含 Python 程式碼的以 .py 為副檔名的文字檔案。要執行程式碼,就需要 Python 直譯器去執行 .py 檔案。
由於整個 Python 語言從規範到直譯器都是開源的,所以理論上,只要水平夠高,任何人都可以編寫 Python 直譯器來執行 Python 程式碼(當然難度很大)。事實上,確實存在多種Python直譯器。
1.5.1 CPython
當我們從 Python 官方網站下載並安裝好 Python 2.7 後,我們就直接獲得了一個官方版本的直譯器:CPython。這個直譯器是用 C 語言開發的,所以叫 CPython。在命令列下執行 Python 就是啟動CPython 直譯器。
CPython是使用最廣的Python直譯器。教程的所有程式碼也都在CPython下執行。
1.5.2 IPython
IPython 是基於 CPython 之上的一個互動式直譯器,也就是說,IPython 只是在互動方式上有所增強,但是執行 Python 程式碼的功能和 CPython 是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但核心其實都是呼叫了 IE。
CPython用 >>> 作為提示符,而 IPython用 In [序號]: 作為提示符。
1.5.3 PyPy
PyPy是另一個 Python 直譯器,它的目標是執行速度。PyPy 採用 JIT 技術,對 Python 程式碼進行動態編譯(注意不是解釋),所以可以顯著提高 Python 程式碼的執行速度。
絕大部分 Python 程式碼都可以在 PyPy 下執行,但是 PyPy 和 CPython 有一些是不同的,這就導致相同的 Python 程式碼在兩種直譯器下執行可能會有不同的結果。如果你的程式碼要放到 PyPy 下執行,就需要了解 PyPy 和 CPython 的不同點。
1.5.4 Jython
Jython是執行在Java平臺上的Python直譯器,可以直接把Python程式碼編譯成Java位元組碼執行。
1.5.5 IronPython
IronPython 和 Jython 類似,只不過 IronPython 是執行在微軟 .Net 平臺上的 Python 直譯器,可以直接把 Python 程式碼編譯成 .Net 的位元組碼。
Python 的直譯器很多,但使用最廣泛的還是 CPython。如果要和 Java 或 .Net 平臺互動,最好的辦法不是用 Jython 或 IronPython,而是通過網路呼叫來互動,確保各程式之間的獨立性。
2. Python 學習環境安裝部署
2.1 Windows 安裝 Python 3.5
在官網下載對應版本的 Python 並安裝即可(需要配置環境變數),過程略(詳見百度)
2.2 Linux 安裝 Python 3.5
2.2.1 安裝 gcc 以便編譯時使用:

[[email protected] ~]# yum install gcc -y

2.2.2 通過 wget 或者直接到官方網站下載 Python 3.5 軟體包:

https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz

2.2.3 下載軟體包後上傳到指定存放軟體包的路徑下:

[[email protected] ~]# mkdir -p /home/zxl/tools
[[email protected] ~]# cd /home/zxl/tools 
[[email protected] tools]# rz -y
rz waiting to receive.
100% 14461 KB 14461 KB/s 00:00:01 0 Errors
[[email protected] tools]# ll
-rw-r--r-- 1 root root 14808460 Dec 16 2018 Python-3.5.0.tar.xz

2.2.4 解壓:

[[email protected] tools]# tar xf Python-3.5.0.tar.xz 
[[email protected] tools]# ll
drwxrwxr-x 16 1000 1000 4096 Sep 13 2015 Python-3.5.0
-rw-r--r-- 1 root root 14808460 Dec 16 2018 Python-3.5.0.tar.xz

2.2.5 進入解壓目錄編譯安裝:

[[email protected] Python-3.5.0]# ./configure --prefix=/usr/local/python
[[email protected] Python-3.5.0]# make && make install

2.2.6 配置環境變數:

[[email protected] Python-3.5.0]# vim /etc/profile
[[email protected] Python-3.5.0]# tail -1 /etc/profile
PATH='/usr/local/python/bin/:$PATH'
[[email protected] Python-3.5.0]# source /etc/profile

2.2.7 執行程式碼檢查是否成功:【以下表示成功】

[[email protected] Python-3.5.0]# python3
Python 3.5.0 (default, Dec 14 2018, 01:23:38) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print ("hello world")
hello world