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 以便編譯時使用python
[root@learnpy ~]# yum install gcc -y
2.2.2 經過 wget 或者直接到官方網站下載 Python 3.5 軟件包linux
https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz
2.2.3 下載軟件包後上傳到指定存放軟件包的路徑下算法
[root@learnpy ~]# mkdir -p /home/zxl/tools [root@learnpy ~]# cd /home/zxl/tools [root@learnpy tools]# rz -y rz waiting to receive. 100% 14461 KB 14461 KB/s 00:00:01 0 Errors [root@learnpy tools]# ll -rw-r--r-- 1 root root 14808460 Dec 16 2018 Python-3.5.0.tar.xz
2.2.4 解壓vim
[root@learnpy tools]# tar xf Python-3.5.0.tar.xz [root@learnpy 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 進入解壓目錄編譯安裝windows
[root@learnpy Python-3.5.0]# ./configure --prefix=/usr/local/python [root@learnpy Python-3.5.0]# make && make install
2.2.6 配置環境變量瀏覽器
[root@learnpy Python-3.5.0]# vim /etc/profile [root@learnpy Python-3.5.0]# tail -1 /etc/profile PATH=/usr/local/python/bin/:$PATH [root@learnpy Python-3.5.0]# source /etc/profile
2.2.7 執行代碼檢查是否成功:【如下表示成功】網絡
1 [root@learnpy Python-3.5.0]# python3
2 Python 3.5.0 (default, Dec 14 2018, 01:23:38) 3 [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux 4 Type "help", "copyright", "credits" or "license" for more information. 5 >>> print ("hello world") 6 hello world
2.3 Windows 電腦安裝 Pycharm多線程
2.3.1 下載地址運維
https://www.jetbrains.com/pycharm/download/#section=windows
2.3.2 選擇 Windows 專業版軟件包點擊下載安裝便可工具
2.3.3 安裝後啓動以下
至此,便可正式開始您的 Python 之旅,一塊兒加油吧!