python 2.7 中文教程-1:簡介

Python是一門簡單易學,功能強大的編程語言。它具有高效的高層次數據結構,簡單但有效的方式支持面向對象編程,語法優雅,動態類型,解釋執行。使之成爲多數平臺上很多領域的腳本和快速應用開發的理想語言。它的設計理念強調代碼的可讀性, 跟C ++或Java等語言比可以用更少的代碼實現同樣的概念。Python能清晰地實現小型和大型程序。

Python解釋器及其豐富的標準庫的源碼或者二進制版本可以從http://www.python.org/免費獲取和轉發。該還包含很多免費的第三方Python模塊、程序、工具的發佈鏈接及附加文檔。

Python的解釋器很容易用C或C++(或其他c可以調用的語言)擴展新功能和數據類型。 Python也適用於作爲定製應用的擴展語言。

Python支持多種編程範式,包括面向對象的,命令式和函數式或過程式編程風格。它具有動態類型系統和自動內存管理和擁有龐大而全面的標準庫

Python虛擬機本身幾乎可以在所有的作業系統中運行。使用一些諸如py2exe、PyPy、PyInstaller之類的工具可以將Python源代碼轉換成可以脫離Python解釋器運行的程序。

Python的官方解釋器是CPython,該解釋器用C語言編寫,是一個由社區驅動的自由軟件,目前由Python軟件基金會管理。

本教程向讀者通俗地介紹Python語言和系統的基本概念和特點。配合Python解釋器邊學邊練最佳,所有例子已經自包含在教程中,也可離線閱讀。

標準對象和模塊參見The Python Standard LibraryThe Python Language Reference提供了Python更正式的說明。要用C或C++編寫擴展參見Extending and Embedding the Python InterpreterPython/C API Reference Manual

本教程不會面面俱到。它介紹了許多Python的最引人注目的特性,會讓你瞭解python風格。看完之後可閱讀和編寫Python模塊。

所有例子基於linux演示,不考慮Windows。

python的設計哲學與定位 

Python的設計哲學是“優雅”、“明確”、“簡單”。因此其對手Perl語言中“總是有多種方法來做同一件事”的理念在Python開發者中通 常是難以忍受的。Python開發者的哲學是“用一種方法,最好是隻有一種方法來做一件事”。在設計Python語言時,如果面臨多種選擇,Python 開發者一般會拒絕花俏的語法,而選擇明確沒有或者很少有歧義的語法。由於這種設計觀念的差異,Python源代碼通常被認爲比Perl具備更好的可讀性, 並且能夠支撐大規模的軟件開發。這些準則被稱爲Python格言。在Python解釋器內運行import this可以獲得完整的列表。

Python開發人員儘量避開不成熟或者不重要的優化。一些針對非重要部位的加快運行速度的補丁通常不會被合併到Python內。所以很多人 [誰?]認爲Python很慢。不過,根據二八定律,大多數程序對速度要求不高。在某些對運行速度要求很高的情況,Python設計師傾向於使用JIT技 術,或者用使用C/C++語言改寫這部分程序。目前可用的JIT技術是PyPy。

實際上python很多標準模塊,比如socket等是c實現的,效率通常比一般開發用c語言的實現要高。另外python中的ctypes和 cpython可以達到c語言類似的效率。pypy在科學計算等相關方面效率可以接近C語言,但是在其他方面效率最多和java差不多,遠不及C。

python的哲學基本上符合了偉大的世界歷史名人老子的思想

python的地位

Python是什麼,是蟒蛇麼?
什麼,是一種編程語言?這個是大陸很多測試從業者的反應。

我們來看看國際權威機構對python地位的評價:

IEEE 2015年對python的整體評價:

以上圖片來源於http://spectrum.ieee.org/computing/software/the-2015-top-ten-programming-languages

從上圖可以看出,python位於第四名,主要用於web開發和系統管理。

比較常用TIOBE編程排名http://www.tiobe.com/tiobe_index?page=index的python位於第五名:

 編程語言流行指數python位於第二名,如下http://pypl.github.io/PYPL.html

無論那個排名,python都是腳本語言的老大。整體綜合python位於第2-5名之間。在大陸,python因爲中文資料相對匱乏,使用者偏少,但是也在快速發展中。

 

Python的使用範圍

大陸開源軟件排名第一的翻牆goagent就是純python書寫的。翻牆軟件Shadowsocks也有python實現。

豆瓣網、知乎、果殼、海淘通、Reddit等公司python佔了大頭。

YouTube、Google、Facebook、Yahoo!、NASA等公司python是核心語言。

阿里巴巴、騰訊、百度、OPPO等有較大規模的python應用。

安卓電池分析工具:https://github.com/google/battery-historian

 

 

  • Web開發

Python經常被用於Web開發。比如,通過mod_wsgi模塊,Apache可以運行用Python編寫的Web程序。使用Python語言編寫的 Gunicorn作爲Web服務器,也能夠運行Python語言編寫的Web程序。Python定義了WSGI標準應用接口來協調Http服務器與基於 Python的Web程序之間的溝通。一些Web框架,如Django、Pyramid、TurboGears、web2py、Zope、Flask、tornoda等,可以讓程序員輕鬆地開發和管理複雜的Web程序。 
Python 對於各種網絡協議的支持很完善,因此經常被用於編寫服務器軟件、網絡蠕蟲。第三方庫Twisted支持異步在線編寫程序和多數標準的網絡協議(包含客戶端 和服務器),並且提供了多種工具,被廣泛用於編寫高性能的服務器軟件。另有gevent這個流行的第三方庫,同樣能夠支持高性能高併發的網絡開發。

爬蟲相關的庫有lxml、re、urllib2、BeautifulSoup、scrapy等。

根據IEEE統計、Python是僅次於Java的第2大web開發語言。

 

  • GUI開發:

Python本身包含的Tkinter庫能夠支持簡單的GUI開發。但是越來越多的Python程序員選擇wxPython或者PyQt來開發跨平臺的桌面軟件。使用它們開發的桌面軟件運行速度快,與用戶的桌面環境相契合。通過PyInstaller還能將程序發佈爲獨立的安裝程序包。與C++相比較,使用Python開發桌面軟件通常更快更容易。

 

  • 操作系統:

在很多作業系統裏,Python是標準的系統組件。大多數Linux發佈版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在終端機下直接運行Python。有一些Linux發佈版的安裝器使用Python語言編寫,比如Ubuntu的Ubiquity安裝器、Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portage包管理系統。Python標準庫包含了多個調用作業系統功能的庫。通過pywin32這個第三方軟件包,Python能夠訪問Windows的COM服務及其它Windows API。使用IronPython,Python程序能夠直接調用.Net Framework。一般說來,Python編寫的系統管理腳本在可讀性、性能、源代碼重用度、擴展性幾方面都優於普通的shell腳本。在樹莓派等相關硬件的系統中,python是核心語言。

 

  • 自動化測試

多數工具集成python作爲開發語言。比如自動化測試工具Appium、Selenium等。性能測試工具Grinder。

UI測試有uiautomator、sikuli、PyAutoGUI、pywinauto、ldtp、dogtail等。

Python的性能測試庫multi-mechanize和locustio、funkload等模塊具備強大的編程能力,通常擴展性和執行效率遠強於Loadrunner和Jmeter。

Python在自動化測試交付很有知名度。比如Scons、buildbot(在谷歌chrome os使用)等。Jenkins有大量的python插件,比如facebook開發的https://github.com/facebook/buck

自動化測試框架pytest、Lettuce、Robot Framework、behave等有一定名氣。

接口測試Python大量的庫支持大量協議,比如HTTP,就可以requests基於pytest很快定製簡單的接口測試框架。

抓包與流量控制有scapy、ATC、mitmproxy等。

命令行自動化有 pexpect、paramiko、subprocess、Fabric等。

安全測試:Flawfinder(http://www.dwheeler.com/flawfinder/)、knock(https://github.com/guelfoweb/knock)等
死鏈接檢查:LinkChecker等
bug管理:Trac、roundup等

python的測試工具之多,以致有一個專門的網頁收集:https://wiki.python.org/moin/PythonTestingToolsTaxonomy

 

  • 跨語言協作:膠水語言:

python是各種語言交互的最佳語言。python本身有c,java,c#的實現,可以直接調用對應語言的相關功能。對於主流的語言,python都可以良好的交互。

 

  • 科學計算:

NumPy、SciPy、Matplotlib可以讓Python程序員編寫科學計算程序。Python一開始就在科學計算方面很出名,現在也是大數據處理的核心語言,多數雲平臺選擇python作爲核心語言。

 

  • 遊戲

很多遊戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫遊戲的邏輯、服務器。相較於Python,Lua的功能更簡單、體積更小;而Python則支持更多的特性和數據類型。很多遊戲,如EVE Online使用Python來處理遊戲中繁多的邏輯。

python歷史 

Python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。

1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作爲ABC語言的一種繼承。之所以選中Python作爲程序的名字,是因爲他是一個蒙提·派森的飛行馬戲團( Monty Python's Flying Circus)的愛好者。ABC是由吉多參加設計的一種教學語言。就吉多本人看來,ABC這種語言非常優美和強大,是專門爲非專業程序員設計的。但認爲是非開放造成的。吉多決心在Python中避免這一錯誤,並取得了非常好的效果,完美結合了C和其他一些語言。

就這樣,Python在吉多手中誕生了。實際上,第一個實現是在Mac機上。可以說,Python是從ABC發展起來,主要受到了Modula-3(另一種相當優美且強大的語言,爲小型團體所設計的)的影響。並且結合了Unix shell和C的習慣。

目前吉多仍然是Python的主要開發者,決定整個Python語言的發展方向。Python社區經常稱呼他是仁慈的獨裁者。

Python 2.0於2000年10月16日發佈,增加了實現完整的垃圾回收,並且支持Unicode。同時,整個開發過程更加透明,社區對開發進度的影響逐漸擴大。 Python 3.0於2008年12月3日發佈,此版不完全兼容之前的Python源代碼。不過,很多新特性後來也被移植到舊的Python 2.6/2.7版本。

Python是完全面向對象的語言。函數、模塊、數字、字符串都是對象。並且完全支持繼承、重載、派生、多繼承,有益於增強源代碼的複用性。 Python支持重載運算符,因此Python也支持泛型設計。相對於Lisp這種傳統的函數式編程語言,Python對函數式設計只提供了有限的支持。 有兩個標準庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數式程序設計工具。

雖然Python可能被粗略地分類爲“腳本語言”(script language),但實際上一些大規模軟件開發計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支持者 較喜歡稱它爲一種高級動態編程語言,原因是“腳本語言”泛指僅作簡單程序設計任務的語言,如shell script、VBScript等只能處理簡單任務的編程語言,並不能與Python相提並論。

Python本身被設計爲可擴充的。並非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕鬆地使用C語 言、C++、Cython來編寫擴充模塊。Python編譯器本身也可以被集成到其它需要腳本語言的程序內。因此,很多人還把Python作爲一種“膠水 語言”(glue language)使用。使用Python將其他語言編寫的程序進行集成和封裝。在Google內部的很多項目,例如Google Engine使用C++編寫性能要求極高的部分,然後用Python或Java/Go調用相應的模塊。《Python技術手冊》的作者馬特利(Alex Martelli)說:“這很難講,不過,2004年,Python已在Google內部使用,Google召募許多Python高手,但在這之前就已決 定使用Python。他們的目的是儘量使用Python,在不得已時改用C++;在操控硬件的場合使用C++,在快速開發時候使用Python。”

 

如何選擇python第三方模塊 

 

1,http://stackoverflow.com/ 是選擇模塊的首選。在裏面搜索python相關內容,一般會有python模塊的比較。

 

2,pypi( https://pypi.python.org/pypi )是選擇python模塊最重要的依據。

 

    pypi上面彙集了python的多數模塊。比如 https://pypi.python.org/pypi/pexpect/3.0 是pexpect模塊的介紹。 20553 downloads in the last month 表明上個月總共被下載了20553次。如果模塊只在pypi上面提供下載,且月下載量不足1000,一般是用戶很少,通常不推薦使用(用戶很少的專用領域除外)。

 

3,linux的包管理提供了豐富的高質量的python模塊,可以嘗試使用。

 

    比如在centos中使用 "yum search all pexpect"

 

4,pythonxy 封裝很多優秀的windows上的python模塊,安裝方便,推薦。

https://python-xy.github.io/downloads.html

 

安裝

1,Linux類系統自帶,初學使用默認即可。

2,Windows安裝:推薦https://python-xy.github.io/downloads.html首頁下載安裝,比較大,耗時較長。https://www.python.org/downloads/有標準安裝版本。

注意: Python3在網絡等方面有較大的改進、與python2不兼容。但是有一些外部庫還不支持Python3,通常安裝python2比較好。

 

python集成開發環境

通用IDE|文本編輯器

很多並非集成開發環境軟件的文本編輯器,也對Python有不同程度的支持,並且加上專門爲Python設計的編輯器插件也會有很高的可用性。

  • eclipse + pydev插件,目前對Python 3.X只支持到3.0

  • emacs + 插件

  • NetBeans + 插件

  • SlickEdit

  • Geany 推薦

  • TextMate

  • Python Tools for Visual Studio

  • Vim + 插件

  • Sublime Text + 插件

  • EditPlus

  • UltraEdit

  • PSPad

  • Editra 由Python開發的程序編輯器。

  • PyCharm 推薦

  • Notepad++ 推薦

專門爲Python設計的IDE軟件

適用於Python的集成開發環境(IDE)軟件,除了標準二進制發佈包所附的IDLE之外,還有許多其他選擇。其中有些軟件設計有語法着色、語法檢查、 運行調試、自動補全、智能感知等便利功能。由於Python的跨平臺出身,這些軟件往往也具備各種操作系統的版本或一定的移植性。

  • Eric:基於PyQt的自由軟件,功能強大。支持自動補全、智能感知、自動語法檢查、工程管理、svn/cvs集成、自動單元測試等功 能。調試功能與Visual Studio和Eclipse類似。目前同時有兩個版本。Eric4支持Python2.x,Eric5支持Python3.x。使用前需要先安裝相應的 PyQt版本。

  • IDLE:Python“標準”IDE。一般隨Python而安裝,支持較少的編輯功能。調試功能也比較弱。

  • Komodo和Komodo Edit:後者是前者的免費精簡版。也可以用於PHP,Ruby,Javascript,Perl,Web和雲開發。

  • PyCharm:由JetBrains打造,該公司的Java IDE軟件IntelliJ擁有海量的用戶;PyCharm具備一般IDE的功能,比如,調試、語法高亮、Project管理、代碼跳轉、智能提示、自動 完成、單元測試、版本控制等等,同時另外,PyCharm還提供了一些很好的功能用於Django開發,同時支持Google App Engine,更酷的是,PyCharm支持IronPython。PyCharm是商業軟件,目前已經到2.5版本。
    推薦

  • PythonWin:包含在pywin32內的編輯器,僅適用於Windows。

  • SPE(Stani's Python Editor):功能較多的免費軟件,依賴wxPython。

  • Ulipad:功能較全的免費軟件,依賴wxPython。

  • WingIDE:可能是功能最全的IDE,但不是免費軟件。強烈推薦 wingide破解參考

  • PyScripter:功能較全的開源IDE,使用Delphi開發。

 

更多參考資料:https://wiki.python.org/moin/IntegratedDevelopmentEnvironments

發佈了28 篇原創文章 · 獲贊 21 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章