python初步
Python是一種面向對象的、解釋型的計算機高級程序設計語言,由Guido van Rossum于1989年開始開發,并于1991年發布第一個公開發布第一個公開發行版。Python是純粹的開源自由軟件,其源代碼和解釋器均遵循GPL(GUN General Public License)協議。Python具有語法簡介、易于學習、功能強大、可擴展性強、跨平臺等諸多特點,逐漸成為最受歡迎的程序設計語言之一。
?本章重點
1.1 認識Python
歡迎來到Python的世界。本節將從Python的發展、引用、特點和版本等內容開始,帶領讀者了解和認識Python。
1.1.1?Python的發展
???1989年圣誕節,Guido在阿姆斯特丹開始準備開發一種新的程序設計語言。作為Monty Python喜劇團體的粉絲,Guido將這門新語言命名為Python。Python的靈感來自ABC語言------Guido參與開發的一種適用于非專業程序開發人員的教學語言。Python認為ABC語言有沒、功能強大,ABC未獲得成功主要是非開放造成的,所以,Guido一開始將Python主要目標之一定位在開放性。同時,Guido還想在Python中實現一些在ABC中閃現過但未曾實現的東西??梢哉f,Python起源于ABC,并收到了Modual-3語言的影響,同時結合了UNIX Shell和C語言的習慣。
經過多年的發展,Python已經成為最受歡迎的程序設計語言之一。2011年1月,TIOBE將Python評為編程語言排行榜2010年度語言。TIOBE網站地址為:http://www.tiobe.com/tiobe_index.圖1-1顯示截止2018年2月的TIOBE程序設計語言排行榜,Python在眾多的程序設計語言中排在java、C、C++之后,處于第4位,其影響力可見一斑。
?
圖1-1 TIOBE程序設計語言排行榜
詳細了解Python的現狀,請訪問Python官方網站:http://Python.org
1.1.2 Python的應用案例
目前,不少公司?Python開開發自己的產品.例如:
??在Python官方網站的Python Success Stories(http://Python.org/about/success/)
1.1.3 Python的特點
1.Python是免費的開源自由軟件
?Python具有下列顯著特點。
?Python遵循GPL協議,也是免費的,不管是用于個人還是商業用途,開發人員都無須支付任何費用,也不勇擔心版權問題。
?作為開源軟件,程序員可以獲得Python源代碼,以研究其內部細節,并可加以修改使其針對目標更加適用。也可以將Python嵌入系統或隨產品一起發布,甚至于銷售Python的源代碼,都沒有任何限制。
2 Python是面向對象的語言
面向對(Object Oriented,OO)是現代高級程序設計語言的一個重要特種。多態、運算符重載、繼承和多重繼承等面向對象編程(Object Oriented Programming OOP)的主要特征也在Python的類模式中得到很好的支持。得益于Python簡潔的語法和數據類型系統,Python中的OOP也變得極為簡單,比其他語言容易。
OOP是Python的一個重要特征,初學者不必為此感到擔心。Python同樣支持傳統的面向過程的編程模式,完全可以在具有一定的基礎之后在深入學習Python的OOP。
?
3 Python具有良好的跨平臺特征
Python是用ANSI C實現的。C語言因為跨平臺和良好的額一致性成為經典的程序設計語言。這意味著Python也具有良好的跨平臺特性,可在目前所有的主流平臺上編譯和運行。所以,在Windows下編程的Python程序,可以輕松在Lunix等其他系統中運行。
因為Python是開源的,可以輕松將其移植到各種不同平臺,包括Lunix、Windows、FreeBSD、BeOS和iOS等平臺。
4 Python功能強大
Python既屬于腳本語言,也屬于高級程序語言,所以,Python具有腳本語言(如Perl、Tcl和Scheme等)的簡單、易用特點,也具有高級程序語言(如C、C++和Java等)的強大功能
Python具有一些強大的功能如下:
???動態數據類型:Python在代碼運行過程中跟蹤變量的數據類型,不需要在代碼中聲明變量的類型,也不要求在使用之前對變量進行類型的聲明。
???自動內存管理:良好的內存管理機制以為這程序運行具有更高的性能。Python程序員無須關心內存的使用和管理,Python自動分配和回收內存。
大型程序支持:通過子模塊、類和異常等工具,允許Python應用大于程序開發。
內置數據結構:Python提供常用數據結構支持。例如,列表、字段、字符串等都屬于Python內置對象。同時,Python也實現了各種數據結構的標準操作,如合并、分片、排序和映射等。
內置庫:Python提供豐富的標準庫,從正則表達式匹配到網絡等,使Python可以實現多種應用。
第三方工具集成:Python很容易集成第三方工具,通過各種擴展包將其應用到各種不同領域
5.Python簡單易學
Python的設計理念是“優雅”“明確”“簡單”,提倡“用一種方法,最好只有一種方法來做一件事”,所以,Python語言語法簡潔、代碼易讀。在國外一些知名大學,開始采用Python作為程序設計課程的編程語言。例如,卡耐基梅隆大學的編程基礎、麻省理工學院的計算機科學及編程導論均使用Python語言講授。
Python不強調數據類型,變量在使用之前無須定義其數據類型,同一個變量可存儲不同類型的數據。
?
??????????????????圖1-2 Python開發人員的設計理念
1.1.4 Python的版本
Phthon發展到現在,經歷了多個版本,如表?1-1所示。
表1-1?Python版本歷史
| 版本號 | 年份 | 擁有者 | GPL兼容 |
| 0.9.0~1.2 | 1991-1995 | CWI | 是 |
| 1.3~1.5.2 | 1995-1999 | CNRI | 是 |
| 1.6 | 2000 | CNRI | 否 |
| 2.0 | 2000 | BeOpen.com | 否 |
| 1.6.1 | 2001 | CNRI | 否 |
| 2.1 | 2001 | PSF | 否 |
| 2.0.1 | 2001 | PSF | 是 |
| 2.1.1 | 2001 | PSF | 是 |
| 2.1.2 | 2002 | PSF | 是 |
| 2.1.3 | 2002 | PSF | 是 |
| 2.2~2.7 | 2001-2015 | PSF | 是 |
| 3.X | 2008至今 | PSF | 是 |
作為一個開源軟件,Python擁有一個參與者眾多的開發社區,它保持的不斷更新和改進。Python的開發者通過一個在線的源代碼控制系統協同工作,所有對Python的修改必須遵循PEP(Python Enhancement Proposals)協議,并通過Python擴展回歸測試系統的測試。目前,由一個非正式的組織PSF(Python Software Foundation,Python軟件基金)負責組織會議并處理Python的知識產權問題。
1.1.5 Python 3.x 與2.x的區別
?1.Python 3.x默認使用UTF-8編碼
???Python 3.x 源代碼中的字符默認使用UTF-8編碼,可以很好地支持中文或其他非英文字符。例如,在Python 3.x 中可以使用漢字作為變量名。
| >>>長度=100 >>>print(長度) 100 |
???在Python2.x中不能使用漢字作為變量名,否則會出錯。例如:
| >>>速度=100 ???File”<stdin>”,line 1 速度=100 ^ ?SyntaxError:invalid syntax |
?
?2. print()函數替代了print語句 ?
在Python3.x 中,調用print()函數來輸出數據。例如:
| >>>x=100 >>>print(10,’abc’,x) 10 ?abc 100 |
在Python?2.x中則使用print語句。例如:
| >>>x = 100 >>>print 10,’abc’,x 10 abc 100 >>>print(10,’abc’,x) (10,’abc’,100) |
3.完全面向對象
在Python2.x中的各種數據類型,在3.x中全面升級為類(class)。例如,在Python2.x中輸出數據類型結果如下。
?
| >>> int,float,str (<class 'int'>, <class 'float'>, <class 'str'>) |
4.用視圖和迭代器替換了列表
?下面的常用方法或函數在Python2.x中返回列表,在3.x中有很多變化。
5.比較運算中的改變
7 字符串改變
?在Python2.x中,字符串中的字符默認為單字節(8位),字符串的類型可分為str和unicode兩種。帶前綴”u”或者”U”的字符串為unicode類型,其他的字符(包括帶前綴”b” ”B” “r”或”R”的字符串)為str類型。所有的字符串在輸出時會將包含的字符直接輸出。
例如:
| >>>print type(‘\\abc’),type(b’abc’),type(r’\\abc’),type(u’abc’) <type ‘str’><type ‘str’><type ‘str’><type ‘unicode’> >>>print ‘\\abc’,b’abc’,r’\\abc’,u’abc’ \abc abc \\abc?abc |
在Python3.x中,字符默認為unicode字符,即雙字節符。字符串的數據類型分為str和bytes兩種。仍可使用字符串前綴”u”或者”U”,但會被忽略。
在Python3.x中,字符串前綴”b”或”B” 表示二進制字符串,其類型為bytes。例如:
| >>> print(type('\\abc'),type(b'abc'),type(r'\\abc'),type(u'abc')) <class 'str'> <class 'bytes'> <class 'str'> <class 'str'> >>> print('\\abc',b'abc',r'\\abc',u'abc') \abc b'abc' \\abc abc |
8.取消了file數據類型
Python3.x 取消了2.x中的file數據類型。使用open()函數打開文件時,返回的是_io.TextIOWrapper類的實力對象。例如:
???????
| >>>f=open(‘d:/text.txt’,’w’) >>>type(f) <class ‘_io.TextIOWrapper’> >>>f=open(‘d:/test.txt’,’w’) >>>type(f) <type ‘file’> |
9. 異常處理
在Python3.x中,異常處理的改變主要如下。
在Python2.x中,用下面的代碼捕獲和處理異常。
| >>> try: … ???raise TypeError,’類型錯誤’ … except TypeError,err: … ?????print err.message 類型錯誤 |
在Python3.x中,用下面的代碼捕獲和處理異常。
| >>>try: … ????raise TypeError(‘類型錯誤’) … except TypeError as err: … ???print(err) … 類型錯誤 |
10.其他主要語法錯誤改變
其他主要的語法改變如下。
總結
- 上一篇: 函数调用机理
- 下一篇: python中isdigit()、isd