《零基礎(chǔ)學(xué)Python》由淺入深,循序漸進(jìn),從零開(kāi)始學(xué)Python語(yǔ)言,一點(diǎn)都不難
⊙ 編程基礎(chǔ)、編程進(jìn)階"編程應(yīng)用"項(xiàng)目實(shí)戰(zhàn)"上機(jī)練習(xí)
⊙ 300個(gè)實(shí)例、64個(gè)練習(xí)題
超值、大容量DVD
⊙ 本書(shū)教學(xué)視頻
⊙ 本書(shū)源代碼
⊙ 本書(shū)教學(xué)PPT
本書(shū)技術(shù)支持
⊙ 論壇:www.rzchina.net
前言
及時(shí)篇 Python語(yǔ)言基礎(chǔ)
第1章 進(jìn)入Python的世界
1.1 Python的由來(lái)
1.2 Python的特色
1.3 及時(shí)個(gè)Python程序
1.4 搭建開(kāi)發(fā)環(huán)境
1.4.1 Python的下載和安裝
1.4.2 交互式命令行的使用
1.5 Python的開(kāi)發(fā)工具
1.5.1 PyCharm的使用
1.5.2 Eclipse IDE的介紹
1.5.3 EditPlus編輯器環(huán)境的配置
1.6 不同平臺(tái)下的Python
1.7 小結(jié)
1.8 習(xí)題
第2章 Python必須知道的基礎(chǔ)語(yǔ)法
2.1 Python的文件類(lèi)型
2.1.1 源代碼
2.1.2 字節(jié)代碼
2.1.3 優(yōu)化代碼
2.2 Python的編碼規(guī)范
2.2.1 命名規(guī)則
2.2.2 代碼縮進(jìn)與冒號(hào)
2.2.3 模塊導(dǎo)入的規(guī)范
2.2.4 使用空行分隔代碼
2.2.5 正確的注釋
2.2.6 語(yǔ)句的分隔
2.3 變量和常量
2.3.1 變量的命名
2.3.2 變量的賦值
2.3.3 局部變量
2.3.4 全局變量
2.3.5 常量
2.4 數(shù)據(jù)類(lèi)型
2.4.1 數(shù)字
2.4.2 字符串
2.5 運(yùn)算符與表達(dá)式
2.5.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式
2.5.2 關(guān)系運(yùn)算符和關(guān)系表達(dá)式
2.5.3 邏輯運(yùn)算符和邏輯表達(dá)式
2.6 小結(jié)
2.7 習(xí)題
第3章 Python的控制語(yǔ)句
3.1 結(jié)構(gòu)化程序設(shè)計(jì)
3.2 條件判斷語(yǔ)句
3.2.1 if條件語(yǔ)句
3.2.2 if…elif…else判斷語(yǔ)句
3.2.3 if語(yǔ)句也可以嵌套
3.2.4 switch語(yǔ)句的替代方案
3.3 循環(huán)語(yǔ)句
3.3.1 while循環(huán)
3.3.2 for循環(huán)
3.3.3 break和continue語(yǔ)句
3.4 結(jié)構(gòu)化程序示例
3.5 小結(jié)
3.6 習(xí)題
第4章 Python數(shù)據(jù)結(jié)構(gòu)
4.1 元組結(jié)構(gòu)
4.1.1 元組的創(chuàng)建
4.1.2 元組的訪問(wèn)
4.1.3 元組的遍歷
4.2 列表結(jié)構(gòu)
4.2.1 列表的創(chuàng)建
4.2.2 列表的使用
4.2.3 列表的查找、排序、反轉(zhuǎn)
4.2.4 列表實(shí)現(xiàn)堆棧和隊(duì)列
4.3 字典結(jié)構(gòu)
4.3.1 字典的創(chuàng)建
4.3.2 字典的訪問(wèn)
4.3.3 字典的方法
4.3.4 字典的排序、復(fù)制
4.3.5 全局字典——sys.modules模塊
4.4 序列
4.5 小結(jié)
4.6 習(xí)題
第5章 模塊與函數(shù)
5.1 Python程序的結(jié)構(gòu)
5.2 模塊
5.2.1 模塊的創(chuàng)建
5.2.2 模塊的導(dǎo)入
5.2.3 模塊的屬性
5.2.4 模塊的內(nèi)置函數(shù)
5.2.5 自定義包
5.3 函數(shù)
5.3.1 函數(shù)的定義
5.3.2 函數(shù)的參數(shù)
5.3.3 函數(shù)的返回值
5.3.4 函數(shù)的嵌套
5.3.5 遞歸函數(shù)
5.3.6 lambda函數(shù)
5.3.7 Generator函數(shù)
5.4 小結(jié)
5.5 習(xí)題
第6章 字符串與正則表達(dá)式
6.1 常見(jiàn)的字符串操作
6.1.1 字符串的格式化
6.1.2 字符串的轉(zhuǎn)義符
6.1.3 字符串的合并
6.1.4 字符串的截取
6.1.5 字符串的比較
6.1.6 字符串的反轉(zhuǎn)
6.1.7 字符串的查找和替換
6.1.8 字符串與日期的轉(zhuǎn)換
6.2 正則表達(dá)式應(yīng)用
6.2.1 正則表達(dá)式簡(jiǎn)介
6.2.2 使用re模塊處理正則表達(dá)式
6.3 小結(jié)
6.4 習(xí)題
第7章 使用Python處理文件
7.1 文件的常見(jiàn)操作
7.1.1 文件的創(chuàng)建
7.1.2 文件的讀取
7.1.3 文件的寫(xiě)入
7.1.4 文件的刪除
7.1.5 文件的復(fù)制
7.1.6 文件的重命名
7.1.7 文件內(nèi)容的搜索和替換
7.1.8 文件的比較
7.1.9 配置文件的訪問(wèn)
7.2 目錄的常見(jiàn)操作
7.2.1 創(chuàng)建和刪除目錄
7.2.2 目錄的遍歷
7.3 文件和流
7.3.1 Python的流對(duì)象
7.3.2 模擬Java的輸入、輸出流
7.4 文件處理示例——文件屬性瀏覽程序
7.5 小結(jié)
7.6 習(xí)題
第8章 面向?qū)ο缶幊?/p>
8.1 面向?qū)ο蟮母攀?/p>
8.2 類(lèi)和對(duì)象
8.2.1 類(lèi)和對(duì)象的區(qū)別
8.2.2 類(lèi)的定義
8.2.3 對(duì)象的創(chuàng)建
8.3 屬性和方法
8.3.1 類(lèi)的屬性
8.3.2 類(lèi)的方法
8.3.3 內(nèi)部類(lèi)的使用
8.3.4 __init__方法
8.3.5 __del__方法
8.3.6 垃圾回收機(jī)制
8.3.7 類(lèi)的內(nèi)置方法
8.3.8 方法的動(dòng)態(tài)特性
8.4 繼承
8.4.1 使用繼承
8.4.2 抽象基類(lèi)
8.4.3 多態(tài)性
8.4.4 多重繼承
8.4.5 Mixin機(jī)制
8.5 運(yùn)算符的重載
8.6 Python與設(shè)計(jì)模式
8.6.1 設(shè)計(jì)模式簡(jiǎn)介
8.6.2 設(shè)計(jì)模式示例——Python實(shí)現(xiàn)工廠方法
8.7 小結(jié)
8.8 習(xí)題
第9章 異常處理與程序調(diào)試
9.1 異常的處理
9.1.1 Python中的異常
9.1.2 try…except的使用
9.1.3 try…finally的使用
9.1.4 使用raise拋出異常
9.1.5 自定義異常
9.1.6 assert語(yǔ)句的使用
9.1.7 異常信息
9.2 使用自帶IDLE調(diào)試程序
9.3 使用Easy Eclipse for Python調(diào)試程序
9.3.1 新建工程
9.3.2 配置調(diào)試
9.3.3 設(shè)置斷點(diǎn)
9.4 小結(jié)
9.5 習(xí)題
第10章 Python 數(shù)據(jù)庫(kù)編程
10.1 Python環(huán)境下的數(shù)據(jù)庫(kù)編程
10.1.1 通過(guò)ODBC訪問(wèn)數(shù)據(jù)庫(kù)
10.1.2 使用DAO對(duì)象訪問(wèn)數(shù)據(jù)庫(kù)
10.1.3 使用ActiveX Data Object訪問(wèn)數(shù)據(jù)庫(kù)
10.1.4 Python連接數(shù)據(jù)庫(kù)的專(zhuān)用模塊
10.2 使用Python的持久化模塊讀寫(xiě)數(shù)據(jù)
10.3 嵌入式數(shù)據(jù)庫(kù)SQLite
10.3.1 SQLite的命令行工具
10.3.2 使用sqlite3模塊訪問(wèn)SQLite數(shù)據(jù)庫(kù)
10.4 小結(jié)
10.5 習(xí)題
第二篇 Python的GUI程序設(shè)計(jì)
第11章 Python的GUI開(kāi)發(fā)
11.1 Python的GUI開(kāi)發(fā)選擇
11.1.1 認(rèn)識(shí)Python內(nèi)置的GUI庫(kù)Tkinter
11.1.2 使用Tkinter進(jìn)行開(kāi)發(fā)
11.1.3 認(rèn)識(shí)PyQT GUI庫(kù)
11.1.4 使用PyQT GUI庫(kù)進(jìn)行開(kāi)發(fā)
11.2 小結(jié)
11.3 習(xí)題
第12章 GUI編程與Tkinter相關(guān)組件介紹
12.1 GUI程序開(kāi)發(fā)簡(jiǎn)介
12.2 Tkinter與主要組件
12.2.1 在程序中使用Tkinter
12.2.2 頂層窗口
12.2.3 標(biāo)簽
12.2.4 框架
12.2.5 按鈕
12.2.6 輸入框
12.2.7 單選按鈕
12.2.8 復(fù)選按鈕
12.2.9 消息
12.2.10 滾動(dòng)條
12.2.11 列表框
12.3 Tkinter所有組件簡(jiǎn)介
12.4 小結(jié)
12.5 習(xí)題
第三篇 Python的Web開(kāi)發(fā)
第13章 Python的HTML應(yīng)用
13.1 HTML介紹
13.1.1 HTML的歷史
13.1.2 SGML、HTML、XHTML、HTML5的關(guān)系
13.1.3 HTML的標(biāo)簽
13.1.4 HTML的框架組成
13.2 URL的處理
13.2.1 統(tǒng)一資源定位符URL
13.2.2 URL的解析
13.2.3 URL的拼合
13.2.4 URL的分解
13.2.5 URL的編解碼
13.2.6 中文的編解碼
13.2.7 查詢(xún)參數(shù)的編碼
13.3 CGI的使用
13.3.1 CGI介紹
13.3.2 獲取CGI環(huán)境信息
13.3.3 解析用戶(hù)的輸入
13.4 獲取HTML資源
13.4.1 使用urlopen和urlretrieve獲取HTTP資源
13.4.2 分析返回資源的相關(guān)信息
13.4.3 自定義獲取資源方式
13.4.4 使用http.client模塊獲取資源
13.5 HTML文檔的解析
13.6 小結(jié)
13.7 習(xí)題
第14章 Python和XML
14.1 XML介紹
14.1.1 XML的演進(jìn)歷史
14.1.2 XML的優(yōu)點(diǎn)和限制
14.1.3 XML技術(shù)的Python支持
14.2 XML文檔概覽和驗(yàn)證
14.2.1 XML文檔的基礎(chǔ)概念
14.2.2 XML文檔的結(jié)構(gòu)良好性驗(yàn)證
14.2.3 XML文檔的有效性驗(yàn)證
14.3 分析XML文檔結(jié)構(gòu)
14.3.1 XML的元素和標(biāo)簽
14.3.2 元素的屬性
14.3.3 XML的名字
14.3.4 字符實(shí)體
14.3.5 CDATA段
14.3.6 注釋
14.3.7 處理指令
14.3.8 XML定義
14.4 使用SAX處理XML文檔
14.4.1 SAX介紹
14.4.2 SAX處理的組成部分
14.5 使用DOM處理XML文檔
14.5.1 DOM介紹
14.5.2 xml.dom模塊中的接口操作
14.5.3 對(duì)XML文檔的操作
14.6 小結(jié)
14.7 習(xí)題
第15章 Python的Web開(kāi)發(fā)——Django框架的應(yīng)用
15.1 常見(jiàn)的Web開(kāi)發(fā)框架
15.1.1 Zope
15.1.2 TurboGears
15.1.3 Django
15.1.4 其他Web開(kāi)發(fā)框架
15.1.5 根據(jù)自身所需選擇合適的開(kāi)發(fā)框架
15.2 MVC模式
15.2.1 MVC模式介紹
15.2.2 MVC模式的優(yōu)缺點(diǎn)
15.2.3 Django框架中的MVC
15.3 Django開(kāi)發(fā)環(huán)境的搭建
15.3.1 Django框架的安裝
15.3.2 數(shù)據(jù)庫(kù)的配置
15.4 Django框架的應(yīng)用
15.4.1 Web應(yīng)用的創(chuàng)建
15.4.2 Django中的開(kāi)發(fā)服務(wù)器
15.4.3 創(chuàng)建數(shù)據(jù)庫(kù)
15.4.4 生成Django應(yīng)用
15.4.5 創(chuàng)建數(shù)據(jù)模型
15.4.6 URL設(shè)計(jì)
15.4.7 創(chuàng)建視圖
15.4.8 模板系統(tǒng)
15.4.9 Django項(xiàng)目
15.5 Django框架的高級(jí)應(yīng)用
15.5.1 管理界面
15.5.2 生成數(shù)據(jù)庫(kù)數(shù)據(jù)
15.5.3 Session功能
15.5.4 國(guó)際化
15.6 小結(jié)
15.7 習(xí)題
第四篇 Python其他應(yīng)用
第16章 敏捷方法學(xué)在Python中的應(yīng)用——測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
16.1 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
16.1.1 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)模式
16.1.2 TDD的優(yōu)勢(shì)
16.1.3 TDD的使用步驟
16.2 unittest測(cè)試框架
16.2.1 unittest模塊介紹
16.2.2 構(gòu)建測(cè)試用例
16.2.3 構(gòu)建測(cè)試固件
16.2.4 組織多個(gè)測(cè)試用例
16.2.5 構(gòu)建測(cè)試套件
16.2.6 重構(gòu)代碼
16.2.7 執(zhí)行測(cè)試
16.3 使用doctest進(jìn)行測(cè)試
16.3.1 doctest模塊介紹
16.3.2 構(gòu)建可執(zhí)行文檔
16.3.3 執(zhí)行doctest測(cè)試
16.4 小結(jié)
16.5 習(xí)題
第17章 Python中的進(jìn)程和線程
17.1 進(jìn)程和線程
17.1.1 進(jìn)程和線程的概念
17.1.2 Python中對(duì)于進(jìn)程和線程處理的支持
17.2 Python下的進(jìn)程編程
17.2.1 進(jìn)程運(yùn)行環(huán)境
17.2.2 創(chuàng)建進(jìn)程
17.2.3 終止進(jìn)程
17.3 使用subprocess模塊管理進(jìn)程
17.3.1 使用Popen類(lèi)管理進(jìn)程
17.3.2 調(diào)用外部系統(tǒng)命令
17.3.3 替代其他進(jìn)程創(chuàng)建函數(shù)
17.4 進(jìn)程間的信號(hào)機(jī)制
17.4.1 信號(hào)的處理
17.4.2 信號(hào)使用的規(guī)則
17.5 多線程概述
17.5.1 什么是多線程
17.5.2 線程的狀態(tài)
17.5.3 Python中的線程支持
17.6 生成和終止線程
17.6.1 使用_thread模塊
17.6.2 使用threading.Thread類(lèi)
17.7 管理線程
17.7.1 線程狀態(tài)轉(zhuǎn)移
17.7.2 主線程對(duì)子線程的控制
17.7.3 線程中的局部變量
17.8 線程之間的同步
17.8.1 臨界資源和臨界區(qū)
17.8.2 鎖機(jī)制
17.8.3 條件變量
17.8.4 信號(hào)量
17.8.5 同步隊(duì)列
17.8.6 線程同步小結(jié)
17.9 小結(jié)
17.10 習(xí)題
第18章 基于Python的系統(tǒng)管理
18.1 增強(qiáng)的交互式環(huán)境IPython
18.1.1 IPython介紹
18.1.2 IPython的安裝
18.1.3 IPython的啟動(dòng)
18.1.4 IPython的環(huán)境配置
18.2 和IPython的簡(jiǎn)單交互
18.2.1 IPython中的輸入和輸出
18.2.2 輸出提示符的區(qū)別
18.2.3 輸出提示符區(qū)別的原因
18.3 IPython中的magic函數(shù)
18.3.1 magic函數(shù)的使用和構(gòu)造
18.3.2 目錄管理
18.3.3 對(duì)象信息的收集
18.3.4 magic函數(shù)小結(jié)
18.4 IPython適合于系統(tǒng)管理的特點(diǎn)
18.4.1 Tab補(bǔ)全
18.4.2 歷史記錄功能
18.4.3 執(zhí)行外部系統(tǒng)命令和運(yùn)行文件
18.4.4 對(duì)象查看和自省
18.4.5 直接編輯代碼
18.4.6
及時(shí)篇
Python語(yǔ)言基礎(chǔ)
第1章 進(jìn)入Python的世界
Python是一種動(dòng)態(tài)解釋型的編程語(yǔ)言。Python簡(jiǎn)單易學(xué)、功能強(qiáng)大,支持面向?qū)ο蟆⒑瘮?shù)式編程。Python可以在Windows、UNIX等多個(gè)操作系統(tǒng)上使用,同時(shí)Python可以在Java、.NET等開(kāi)發(fā)平臺(tái)上使用,因此也被稱(chēng)為"膠水語(yǔ)言"。Python的簡(jiǎn)潔性、易用性使得開(kāi)發(fā)過(guò)程變得簡(jiǎn)練,特別適用于快速應(yīng)用開(kāi)發(fā)。
本章的知識(shí)點(diǎn):
Python的特征
Python開(kāi)發(fā)環(huán)境的配置
Python程序的編寫(xiě)
不同開(kāi)發(fā)平臺(tái)對(duì)Python的支持
1.1 Python的由來(lái)
Python語(yǔ)言是由Guido van Rossum在1989年開(kāi)發(fā)的,并最終于1991年初發(fā)表。Guido van Rossum曾是CWI公司的一員,使用解釋性編程語(yǔ)言ABC開(kāi)發(fā)應(yīng)用程序,這種語(yǔ)言在軟件開(kāi)發(fā)上有許多局限性。由于他要完成系統(tǒng)管理方面的一些任務(wù),需要獲取Amoeba機(jī)操作系統(tǒng)所提供的系統(tǒng)調(diào)用能力。雖然可以設(shè)計(jì)Amoeba的專(zhuān)用語(yǔ)言實(shí)現(xiàn)這個(gè)任務(wù),但是van Rossum計(jì)劃設(shè)計(jì)一門(mén)更通用的程序設(shè)計(jì)語(yǔ)言。Python就此誕生了。
Python語(yǔ)言已經(jīng)誕生20多年了,正逐漸發(fā)展為主流程序設(shè)計(jì)語(yǔ)言之一,目前在TIOBE編程語(yǔ)言排行榜中長(zhǎng)期占據(jù)第八的位次。由于Python語(yǔ)言的動(dòng)態(tài)性,程序解釋執(zhí)行的速度比編譯型語(yǔ)言慢。但是隨著Python語(yǔ)言的不斷優(yōu)化,一些諸如PyPy項(xiàng)目的不斷發(fā)展,以及計(jì)算機(jī)硬件技術(shù)的不斷發(fā)展,動(dòng)態(tài)語(yǔ)言已經(jīng)越來(lái)越受到工業(yè)領(lǐng)域的重視。其中的代表性語(yǔ)言有Python、Ruby、SmallTalk、Groovy等。
眾所周知,Java是工業(yè)應(yīng)用領(lǐng)域認(rèn)可的開(kāi)發(fā)語(yǔ)言。Java與C++相比使用更容易,內(nèi)部結(jié)構(gòu)也相對(duì)簡(jiǎn)單。而Python的語(yǔ)法特性使得程序設(shè)計(jì)變得更輕松,用Python能編寫(xiě)出比Java可讀性更強(qiáng)的代碼。隨著Jython等解釋器的出現(xiàn),使得Python可以在Java虛擬機(jī)上運(yùn)行。這樣Python可以使用Java豐富的應(yīng)用程序包。Python與讀者熟知的JavaScript非常相似,都是解釋執(zhí)行,而且語(yǔ)法結(jié)構(gòu)有很多相同的地方。JavaScript是瀏覽器端的客戶(hù)腳本語(yǔ)言,而Python也可以用于Web方面的開(kāi)發(fā)。
Python作為腳本式語(yǔ)言,吸收了Perl、Tcl等語(yǔ)言的優(yōu)點(diǎn),這使得Python具備Tcl的擴(kuò)展性,同時(shí)又具備Perl的文本解析和匹配能力。Python與Lisp也有相似之處,Python可以實(shí)現(xiàn)函數(shù)式的編程模型。
1.2 Python的特色
程序設(shè)計(jì)語(yǔ)言在不斷發(fā)展,從最初的匯編語(yǔ)言到后來(lái)的C、Pascal語(yǔ)言,發(fā)展到現(xiàn)在的C++、Java等高級(jí)編程語(yǔ)言。程序設(shè)計(jì)的難度在不斷減小,軟件的開(kāi)發(fā)和設(shè)計(jì)已經(jīng)形成了一套標(biāo)準(zhǔn),開(kāi)發(fā)工作已經(jīng)不再是復(fù)雜的任務(wù)。最初只能使用機(jī)器碼編寫(xiě)代碼,而現(xiàn)在可以使用具有良好調(diào)試功能的IDE環(huán)境編程。Python使用C語(yǔ)言開(kāi)發(fā),但是Python不再有C語(yǔ)言中的指針等復(fù)雜數(shù)據(jù)類(lèi)型。Python的簡(jiǎn)潔性使得軟件的代碼大幅度地減少,開(kāi)發(fā)任務(wù)進(jìn)一步簡(jiǎn)化。程序員關(guān)注的重點(diǎn)不再是語(yǔ)法特性,而是程序所要實(shí)現(xiàn)的任務(wù)。Python語(yǔ)言有許多重要的特性,而且有的特性是富有創(chuàng)造性的。
1.面向?qū)ο蟮奶匦?/p>
面向?qū)ο蟮某绦蛟O(shè)計(jì)解決了結(jié)構(gòu)化程序設(shè)計(jì)的復(fù)雜性,使得程序設(shè)計(jì)更貼近現(xiàn)實(shí)生活。結(jié)構(gòu)化程序設(shè)計(jì)把數(shù)據(jù)和邏輯混合在一起,不便于程序的維護(hù)。面向?qū)ο蟮某绦蛟O(shè)計(jì)抽象出對(duì)象的行為和屬性,把行為和屬性分離開(kāi),但又合理地組織在一起。Python語(yǔ)言具有很強(qiáng)的面向?qū)ο筇匦裕液?jiǎn)化了面向?qū)ο蟮膶?shí)現(xiàn)。它消除了保護(hù)類(lèi)型、抽象類(lèi)、接口等面向?qū)ο蟮脑兀沟妹嫦驅(qū)ο蟮母拍罡菀桌斫狻?/p>
2.內(nèi)置的數(shù)據(jù)結(jié)構(gòu)
Python提供了一些內(nèi)置的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)了類(lèi)似Java中集合類(lèi)的功能。Python的數(shù)據(jù)結(jié)構(gòu)包括元組、列表、字典、集合等。內(nèi)置數(shù)據(jù)結(jié)構(gòu)的出現(xiàn)簡(jiǎn)化了程序的設(shè)計(jì)。元組相當(dāng)于"只讀"的數(shù)組,列表可以作為可變長(zhǎng)度的數(shù)組使用,字典相當(dāng)于Java中的HashTable類(lèi)型。內(nèi)置數(shù)據(jù)結(jié)構(gòu)的具體使用方法詳見(jiàn)第4章。
3.簡(jiǎn)單性
Python語(yǔ)言的關(guān)鍵字比較少。它沒(méi)有分號(hào)、begin、end等標(biāo)記,代碼塊使用空格或制表鍵縮進(jìn)的方式來(lái)分隔。Python的代碼簡(jiǎn)潔、短小,易于閱讀。Python簡(jiǎn)化了循環(huán)語(yǔ)句,即使程序結(jié)構(gòu)很復(fù)雜也能快速讀懂。詳細(xì)信息請(qǐng)參考第2章的相關(guān)內(nèi)容。
4.健壯性
Python提供了異常處理機(jī)制,能捕獲程序的異常情況。此外Python的堆棧跟蹤對(duì)象能夠指出程序出錯(cuò)的位置和出錯(cuò)的原因。異常機(jī)制能夠避免不安全退出的情況,同時(shí)能幫助程序員調(diào)試程序。詳細(xì)信息請(qǐng)參考第9章的相關(guān)內(nèi)容。
5.跨平臺(tái)性
Python會(huì)先被編譯為與平臺(tái)相關(guān)的二進(jìn)制代碼,然后再解釋執(zhí)行。這種方式和Java類(lèi)似,但Python的執(zhí)行速度提高了。Python編寫(xiě)的應(yīng)用程序可以運(yùn)行在Windows、UNIX、Linux等不同的操作系統(tǒng)上。在一種操作系統(tǒng)上編寫(xiě)的Python代碼只需做少量的修改,就可以移植到其他的操作系統(tǒng)上。
6.可擴(kuò)展性
Python是采用C開(kāi)發(fā)的語(yǔ)言,因此可以使用C擴(kuò)展Python,可以給Python添加新的模塊、新的類(lèi)。同時(shí)Python可以嵌入C、C++語(yǔ)言開(kāi)發(fā)的項(xiàng)目中,使程序具備腳本語(yǔ)言的特性。
7.動(dòng)態(tài)性
Python與JavaScript、PHP、Perl等語(yǔ)言類(lèi)似,它不需要另外聲明變量,直接賦值即可創(chuàng)建一個(gè)新的變量。
8.強(qiáng)類(lèi)型語(yǔ)言
Python的變量創(chuàng)建后會(huì)對(duì)應(yīng)一種類(lèi)型,它可根據(jù)賦值表達(dá)式的內(nèi)容決定變量的類(lèi)型。Python在內(nèi)部建立了管理這些變量的機(jī)制,不同類(lèi)型的變量需要類(lèi)型轉(zhuǎn)換。
9.應(yīng)用廣泛
Python語(yǔ)言應(yīng)用于數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、圖形圖像、數(shù)學(xué)計(jì)算、Web開(kāi)發(fā)、操作系統(tǒng)擴(kuò)展等領(lǐng)域。有許多第三方庫(kù)支持Python。例如,PIL庫(kù)(目前已經(jīng)不再維護(hù),取而代之的有Pillow)用于圖像處理、NumPy庫(kù)用于數(shù)學(xué)計(jì)算、WxPython庫(kù)用于GUI程序的設(shè)計(jì)、Django框架用于Web應(yīng)用程序的開(kāi)發(fā)等。
1.3 及時(shí)個(gè)Python程序
Python的源代碼文件以"py"作為后綴。下面編寫(xiě)一段簡(jiǎn)單的Python程序,創(chuàng)建一個(gè)名為hello.py的文件,用于輸出字符串"hello world"。
01 if __name__ == "__main__":
02 print("hello world")
[代碼說(shuō)明]
第1行代碼相當(dāng)于C語(yǔ)言中的main()函數(shù),是Python程序的入口。詳細(xì)用法請(qǐng)參考第5章的相關(guān)內(nèi)容。
第2行代碼使用print語(yǔ)句輸出字符串"hello world"。
輸出結(jié)果如下所示。
hello world
Python的print語(yǔ)句用于輸出字符串的內(nèi)容,即把雙引號(hào)中的內(nèi)容輸出到控制臺(tái)。Python的輸入、輸出是通過(guò)"流"實(shí)現(xiàn)的,上述print語(yǔ)句把字符串的內(nèi)容輸出到標(biāo)準(zhǔn)輸出流,即輸出到控制臺(tái)。流也可以把結(jié)果輸出到文件、打印機(jī)等,關(guān)于流的詳細(xì)用法請(qǐng)參考7.3節(jié)的內(nèi)容。
Python程序的運(yùn)行非常簡(jiǎn)單,命令格式如下所示。
python python_file_path + python_file.py
其中python_file.py 表示Python的源代碼文件,python_file_path表示python_file.py所在的路徑。在DOS窗口中輸入如圖1-1所示的命令,運(yùn)行文件hello.py。
圖1-1 Python程序的運(yùn)行
這種運(yùn)行方式不夠直觀,而且不便于程序的調(diào)試。后面將介紹如何在編輯器EditPlus和開(kāi)發(fā)工具PyCharm中運(yùn)行Python程序。