Python, 是一種面向對象、解釋型計算機程序設計語言,由Guido van Rossum於1989年末發明,第一個公開發行版發行於1991年,Python 源代碼一樣遵循 GPL(GNU General Public License)協議。Python語法簡潔而清晰,具備豐富和強大的類庫。它常被暱稱爲膠水語言,可以把用其餘語言製做的各類模塊(尤爲是C/C++)很輕鬆地聯結在一塊兒。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),而後對其中有特別要求的部分,用更合適的語言改寫,好比3D遊戲中的圖形渲染模塊,性能要求特別高,就能夠用C/C++重寫,然後封裝爲Python能夠調用的擴展類庫。須要注意的是在您使用擴展類庫時可能須要考慮平臺問題,某些可能不提供跨平臺的實現。html
主要特色python
簡單:Python是一種表明簡單主義思想的語言。閱讀一個良好的Python程序就感受像是在讀英語同樣。它使你可以專一於解決問題而不是去搞明白語言自己。linux
易學:Python極其容易上手,由於Python有極其簡單的語法。android
免費、開源:Python是FLOSS(自由/開放源碼軟件)之一。使用者能夠自由地發佈這個軟件的拷貝、閱讀它的源代碼、對它作改動、把它的一部分用於新的自由軟件中。FLOSS是基於一個團體分享知識的概念。程序員
高層語言:用Python語言編寫程序的時候無需考慮諸如如何管理你的程序使用的內存一類的底層細節。正則表達式
可移植性:因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工做在不一樣平臺上)。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/二、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基於linux開發的android平臺。算法
解釋性:一個用編譯性語言好比C或C++寫的程序能夠從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程經過編譯器和不一樣的標記、選項完成。sql
運行程序的時候,鏈接/轉載器軟件把你的程序從硬盤複製到內存中而且運行。而Python語言寫的程序不須要編譯成二進制代碼。你能夠直接從源代碼運行 程序。shell
在計算機內部,Python解釋器把源代碼轉換成稱爲字節碼的中間形式,而後再把它翻譯成計算機使用的機器語言並運行。這使得使用Python更加簡單。也使得Python程序更加易於移植。數據庫
面向對象:Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的。
可擴展性:若是須要一段關鍵代碼運行得更快或者但願某些算法不公開,能夠部分程序用C或C++編寫,而後在Python程序中使用它們。
可嵌入性:能夠把Python嵌入C/C++程序,從而向程序用戶提供腳本功能。
豐富的庫:Python標準庫確實很龐大。它能夠幫助處理各類工做,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其餘與系統有關的操做。這被稱做Python的「功能齊全」理念。除了標準庫之外,還有許多其餘高質量的庫,如wxPython、Twisted和Python圖像庫等等。
規範的代碼:Python採用強制縮進的方式使得代碼具備較好可讀性。而Python語言寫的程序不須要編譯成二進制代碼。
Python 是一種不受侷限、跨平臺的開源編程語言,它功能強大且簡單易學。於是獲得了普遍應用和支持。
ArcGIS 9.0 社區中引入了 Python。此後,Python 被視爲可供地理處理用戶選擇的腳本語言並得以不斷髮展。每一個版本都進一步加強了 Python 體驗,從而爲您提供更多的功能以及更豐富、更友好的 Python 體驗。
ESRI 已將 Python 徹底歸入 ArcGIS 中,並將其視爲可知足咱們用戶社區需求的語言。下面僅介紹 Python 的部分優點[1]:
Python 已延伸到 ArcGIS 中,成爲了一種用於進行數據分析、數據轉換、數據管理和地圖自動化的語言,於是有助於提升工做效率。
強制縮進:這也許不該該被稱爲侷限,可是它用縮進來區分語句關係的方式仍是給不少初學者帶來了困惑。
單行語句和命令行輸出問題:不少時候不能將程序連寫成一行,如import sys;for i in sys.path:print i。而perl和awk就無此限制,能夠較爲方便的在shell下完成簡單程序,不須要如Python同樣,必須將程序寫入一個.py文件。
系統編程:提供API(Application Programming Interface應用程序編程接口),能方便進行系統維護和管理,Linux下標誌性語言之一,是不少系統管理員理想的編程工具。
圖形處理:有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。
數學處理:NumPy擴展提供大量與許多標準數學庫的接口。
文本處理:python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。
數據庫編程:程序員可經過遵循Python DB-API(數據庫應用程序編程接口)規範的模塊與Microsoft SQL Server,Oracle,Sybase,DB2,Mysql、SQLite等數據庫通訊。python自帶有一個Gadfly模塊,提供了一個完整的SQL環境。
網絡編程:提供豐富的模塊支持sockets編程,能方便快速地開發分佈式應用程序。不少大規模軟件開發計劃例如Zope,Mnet 及BitTorrent. Google都在普遍地使用它。
Web編程:應用的開發語言,支持最新的XML技術。
多媒體應用:Python的PyOpenGL模塊封裝了「OpenGL應用程序編程接口」,能進行二維和三維圖像處理。PyGame模塊可用於編寫遊戲軟件。
Python的創始人爲Guido van Rossum。1989年聖誕節期間,在阿姆斯特丹,Guido爲了打發聖誕節的無趣,決心開發一個新的腳本解釋程序,作爲ABC 語言的一種繼承。之因此選中Python(大蟒蛇的意思)做爲程序的名字,是由於他是一個叫Monty Python的喜劇團體的愛好者。
ABC是由Guido參加設計的一種教學語言。就Guido本人看來,ABC 這種語言很是優美和強大,是專門爲非專業程序員設計的。可是ABC語言並無成功,究其緣由,Guido 認爲是非開放形成的。Guido 決心在Python 中避免這一錯誤。同時,他還想實如今ABC 中閃現過但不曾實現的東西。
就這樣,Python在Guido手中誕生了。實際上,第一個實現是在Mac機上。能夠說,Python是從ABC發展起來,主要受到了Modula-3(另外一種至關優美且強大的語言,爲小型團體所設計的)的影響。而且結合了Unix shell和C的習慣。執行
Python在執行時,首先會將.py文件中的源代碼編譯成Python的byte code(字節碼),而後再由Python Virtual Machine(Python 虛擬機)來執行這些編譯好的byte code。這種機制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine與Java或.NET的Virtual Machine不一樣的是,Python的Virtual Machine是一種更高級的Virtual Machine。
這裏的高級並非一般意義上的高級,不是說Python的Virtual Machine比Java或.NET的功能更強大,而是說和Java 或.NET相比,Python的Virtual Machine距離真實機器的距離更遠。或者能夠這麼說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。
基於C的Python編譯出的字節碼文件,一般是.pyc格式。
個人第一個Python程序
Python語言的幾個要件
數據對象和組織
整型int,浮點數float,複數complex,邏輯值bool,字符串str
列表list,元組tuple,集合set,字典dict
賦值和控制流
表達式計算、函數調用、賦值
順序、條件分支、循環
函數定義、類定義
Python數據類型
整數:0x表示十六進制
浮點數:科學計數法,1.23e9
字符串: '' 或者 ""
布爾值:True、False,可使用and、or和not運算
空值:用None表示,不能理解爲0
Python變量
變量的概念基本上和初中代數的方程變量一致
變量就像貼在東西上的標籤
命名規則:大小寫英文、數字和下劃線,且不能用數字開頭
同一變量能夠反覆賦值,並且能夠是不一樣類型的變量
Python數據類型:整數int、浮點數float
〉 最大的特色是不限制大小
〉 浮點數受到17位有效數字的限制
〉 常見的運算包括加、減、乘、除、 整除、求餘、冪指數等
〉 浮點數的操做也差很少
〉 一 些 常 用 的 數 學 函 數 如 sqrt/sin/cos等都在math模塊中 import math math.sqrt(2)
以下圖所示
Python數據類型:複數
〉 Python內置對複數的計算
〉 支持全部常見的複數計算
〉 對複數處理的數學函數在模 塊 cmath中 import cmath cmath.sqrt(1+2j)
Python數據類型:邏輯值
〉 邏輯值僅包括True/False兩個
〉 用來配合if/while等語句作條件判斷
〉 其它數據類型能夠轉換爲邏輯值: 例如數值:0與非0等
Python數據類型:字符串
最大的特色是Python字符串不可修 改,只能生成新的字符串
用雙引號或者單引號均可以表示字 符串
多行字符串用三個連續單引號表示 〉 特殊字符用轉義符號"\"表示 製表符 \ t ,換行符號 \ n
字符串操做 : +鏈接 、 *複製 、len長度 [start:end:step]用來提取一部分