Python的由來:php
Python的創始人:Guido van Rossumjava
Guido 在1989年12月時,尋找一門「課餘」編程項目來打發聖誕節先後的時間。Guido決定爲當時正構思的一個新的腳本語言寫一個解釋器,它是ABC語言的後代,對UNIX/C程序員會有吸引力。做爲一個略微有些無關想法的人,和一個蒙提·派森的飛行馬戲團的狂熱愛好者,他選擇了Python做爲項目的標題。python
1991年 發佈Python第一個版本。mysql
Python的現況:linux
截止2016年7月,Python在TIOBE流行編程語言排行榜,已經上升到第四名。Python呈上升趨勢,反映出Python的應用愈來愈普遍。程序員
爲何使用Python的人悅來越多?web
Python被應用在衆多領域:
數據分析: 2016/2月/11,美國科學家宣佈發現引力波,分析觀測30年的數據。分析引力波數據的Python包:GWPY
雲計算 : 典型應用——Python開發的OpenStack
WEB開發: 衆多優秀的WEB框架,Django、flask、 tornado
科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas。
系統運維: 運維人員必備,slatstack(系統自動化配置和管理工具),Ansible(自動化運維工具)
圖形開發: wxPython、PyQT、TKinter
……………算法
使用Python的企業:
Google - Google Groups、Gmail、Google Maps、AlphaGo等,Google App Engine支持python做爲開發語言
NASA - 美國宇航局,從1994年起把python做爲主要開發語言
Dropbox - 美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載
豆瓣網 - 圖書、唱片、電影等文化產品的資料數據庫網站
BitTorrent - bt下載軟件客戶端
gedit - Linux平臺的文本編輯器
GIMP - Linux平臺的圖像處理軟件(Linux下的PS)
知乎(國外的Quora) - 社交問答網站,國內最大的問答社區,經過Python開發
Autodesk Maya - 3D建模軟件,支持python做爲腳本語言
YouTube:世界上最大的視頻網站YouTube就是用Python開發的
Facebook:大量的基礎庫均經過Python實現的
Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的sql
除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各類各樣的任務。
更多案例:https://www.python.org/about/success/shell
Python和其餘語言對比:
咱們先來了解下什麼是編程語言!
電腦只懂0和1組成的機器語言。 用0和1告訴計算機作事很累;人類語言易瞭解,學習快,效率高。
若是定義一套規範語法,說明如何將人類語言轉換成機器語言。這樣就可使用人類語言來告訴計算機作事,這就是編程語言。
將編程語言翻譯成機器語言,即0和1, ——這個過程叫編譯。
編程語言有不少種,上方語言排行榜中的:C/C++語言,Java、C#、Python等等 都稱做編程語言。
機器語言—— 用0和1描述指令
彙編語言——實質和機器語言相同,只是指令採用英文縮寫更容易識別和記憶
高級語言——和彙編相比,將多個相關的機器指令合併成爲一條指令,去掉了具體的操做。Python、C/C++語言,Java、C#、php等都是高級語言。 java通常作企業開發,C/C++ 主要用來系統開發,php主要用來web開發。
解釋型語言和編譯型語言
計算機自己不能識別高級語言,當咱們運行一個程序的時候,須要一個「翻譯」 來把 高級語言轉換成計算機能讀懂的語言。 「翻譯」過程分兩種:
編譯
編譯型語言在執行程序前,首先會經過編譯器執行一個編譯的過程,把程序編譯成機器語言。 以後,程序再次運行的時候,就不要「翻譯」了,而是能夠直接執行。好比C語言。 編譯型語言的優勢在於在運行程序的時候不用解釋,可直接利用已經翻譯過的文件。
解釋
解釋型語言就沒有編譯的過程,而是在程序運行的時候,經過解釋器逐行解釋代碼,而後運行。
python即屬於解釋型語言。
java等基於虛擬機的語言興起以後,編程語言又不能單純的在劃分爲編譯型語言或解釋型語言。 java是首先經過編譯器將代碼編譯成字節碼文件(爲了跨平臺),而後在JVM執行java字節碼,將其解釋成機器語言。 因此咱們說java是一種半編譯半解釋的語言。
C#,在第一次執行的時候,將代碼編譯成IL中間碼文件,而後由JIT編譯器編譯成本地的機器碼執行。 至關於編譯了兩次。
編譯型與解釋型,二者各有利弊。前者因爲程序執行速度快,同等條件下對系統要求較低,所以像開發操做系統、大型應用程序、數據庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)、VB等基本均可視爲編譯語言,而一些網頁腳本、服務器腳本及輔助開發接口這樣的對速度要求不高、對不一樣系統平臺間的兼容性有必定要求的程序則一般使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python等等。
Python的優缺點
優勢:
1. Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,
初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。
2. 開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大下降開發週期,避免重複造輪子。
3. 高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
4. 可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
5. 可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
6. 可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能
缺點:
1. 代碼不能加密
由於PYTHON是解釋性語言,它的源碼都是以明文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
2. 多線程支持很差——等講線程的時候在詳細說
3. Python慢
Python相對C語言確實慢不少,但其實這裏所指的速度慢在大多數時候咱們是沒法感知的,好比說,是用C語言程序開發了一個程序,執行須要花0.01秒,使用Python實現一樣功能的程序,須要花0.1秒的時間,雖然相差10倍,可是咱們基本是感知不到的。更多的時候,程序慢是程序員實現功能方式致使的。就好像開罐頭的時候,有的人用牙咬,有的人用工具,這樣兩我的的效率相比起來就差了不少。
Python解釋器將程序的讀入內存編譯成字節碼字節碼轉換爲機器碼底層執行
Python解釋器:
Cpython
Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。
Jyhton
Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。
IronPython
Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
PyPy(特殊)
Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。
RubyPython、Brython ...
Python的解釋器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是經過網絡調用來交互,確保各程序之間的獨立性。
Python 發展史
1989年,爲了打發聖誕節假期,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。
1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。
Python 1.0 - January 1994 增長了 lambda, map, filter and reduce.
1999年 Python的web框架之祖——Zope 1發佈
Python 2.0 - 2000/10/16,加入了內存回收機制,構成了如今Python語言框架的基礎
Python 2.4 – 2004/11/30, 同年目前最流行的WEB框架Django 誕生
Python 2.5 - 2006/09/19
Python 2.6 - 2008/10/1
Python 2.7 - 2010/07/03
Python 3.0 - 2008/12/03
Python 3.1 - 2009/06/27
Python 3.2 - 2011/02/20
Python 3.3 - 2012/09/29
Python 3.4 - 2014/03/16
Python 3.5 - 2015/09/13
2014年11月,Python2.7將在2020年中止支持的消息被髮布,而且不會在發佈2.8版本,建議用戶儘量的遷移到3.4+
Python最初發布時,在設計上有一些缺陷,好比Unicode標準晚於Python出現,因此一直以來對Unicode的支持並不徹底,而ASCII編碼支持的字符有限。例: 對中文支持很差
Python3相對Python早期的版本是一個較大的升級,Py3在設計的時候沒有考慮向下兼容,因此不少早期版本的Python的程序沒法再Py3上運行。
爲了照顧早期的版本,推出過渡版本2.6——基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,容許使用部分Python 3.0的語法與函數。
2010年繼續推出了兼容版本2.7,大量Python3的特性被反向遷移到了Python2.7
2.7比2.6進步很是多,同時擁有大量3中的特性和庫,而且照顧了原有的Python開發人羣
Python2 仍是 Python3 ?
py2.7是2.x系列的最後一個版本,已經中止開發,再也不增長新功能。2020年終止支持。
全部的最新的標準庫的更新改進,只會在3.x的版本里出現。
龜叔決定清理Python2.x ,而且再也不兼容舊版本。 最大的一個改變就是使用Unicode做爲默認編碼。Pyhton2.x中直接寫中文會報錯,Python3中能夠直接寫中文了。
從開源項目看,支持py3的比例已經大大提升,知名的項目通常都支持py2.7和py3+。
py3比py2更規範統1、去掉了不必的關鍵字
Python3.x還在持續改進
因此咱們仍是推薦你們使用Python3.x。
linux自帶python, 建議使用ubuntu14.04及以上版本,自帶python2和python3 兩套環境。
Linux下的安裝步驟:
1. 先到官方網站下載python3的安裝包
https://www.python.org/downloads/source/ ---我下載的是Python-3.5.2.tar.xz
2. 經過sftp上傳包到服務器
3.解壓
tar -xf Python-3.5.2.tar.xz
4.編譯安裝
!!!!注意 注意 ⚠️ 在編譯以前須要安裝一些必須的依賴,不然當報錯的時候還得從新編譯 !!!
安裝必要依賴(至少須要以下兩個,能夠經過命令: 查看系統是否已經安裝!)
yum install openssl-devel -y yum install zlib-devel -y
繼續安裝
cd Python-3.5.2 ./configure --prefix=/opt/Python #安裝目錄能夠本身定義無所謂。
make
make install
編譯完成後會在如 /opt/下生成Python的文件夾 ,沒錯這就是編譯完成的python --爲了方便之行小夥伴們能夠本身定義一個軟鏈接以下:
# ln -s /opt/Python/bin/python3 /usr/bin/python3
OK,Python3解釋器安裝完成。
下面進入關鍵的地方,給python3安裝pip3
安裝pip3 須要分兩步,首先安裝setuptools,而後再安裝pip !!!
1.首先安裝setuptools
小夥伴們能夠經過官方模塊庫來下載:https://pypi.python.org/pypi
也能夠直接用wget到服務器上下載。
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26 tar -zxvf setuptools-19.6.tar.gz cd setuptools-19.6 python3 setup.py build python3 setup.py install
2.而後直接安裝pip就搞定了。。
一樣先下載而後在執行命令搞定!!
wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb tar -zxvf pip-8.0.2.tar.gz cd pip-8.0.2 python3 setup.py build python3 setup.py install
安裝完成以後咱們再來看下python的bin目錄下會增長一個 PIP目錄。
pip環境測試:
1.首先咱們進入pytho3 隨便找一個沒有安裝的模塊;
[root@centos3 bin]# python3 Python 3.5.2 (default, Jul 27 2016, 03:36:56) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import pymysql Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'pymysql' ##沒有此模塊奧 >>>
好 ,咱們用新安裝的pip3來裝下試試:
[root@centos3 bin]# /opt/Python/bin/pip3 install pymysql Collecting pymysql Downloading PyMySQL-0.7.5-py2.py3-none-any.whl (77kB) 100% |████████████████████████████████| 81kB 3.2kB/s Installing collected packages: pymysql Successfully installed pymysql-0.7.5 ######安裝完成
安裝完成了,看來pip3自己沒有問題,咱們測試下是否真正的給python3裝上了這個模塊吧(有可能裝到了python2上了呢 ……-_-#)