官术网_书友最值得收藏!

第1章 Python概述

Python語言是一種功能強(qiáng)大的跨平臺(tái)面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,是目前應(yīng)用最為廣泛的計(jì)算機(jī)語言之一。它具有簡單易學(xué)、面向?qū)ο蟆⒖缙脚_(tái)、交互解釋、模塊庫豐富、應(yīng)用廣泛等特點(diǎn)。本章就Python語言相關(guān)知識(shí)進(jìn)行簡要介紹。

學(xué)習(xí)重點(diǎn)或難點(diǎn)

●程序設(shè)計(jì)語言與Python語言簡介

●Python語法概述

●安裝Python與常用編輯器

●Python程序應(yīng)用實(shí)例

學(xué)習(xí)本章將使讀者對(duì)Python語言及Python語言程序有初步認(rèn)識(shí),并能開展Python語言程序的運(yùn)行實(shí)踐。整體上認(rèn)識(shí)與把握Python語言是學(xué)習(xí)它的第一步。

1.1 程序設(shè)計(jì)語言簡介

自從第一臺(tái)計(jì)算機(jī)誕生以來,程序設(shè)計(jì)語言和程序設(shè)計(jì)方法不斷發(fā)展。

語言是思維的載體。人和計(jì)算機(jī)打交道,必須要解決一個(gè)“語言”溝通的問題。計(jì)算機(jī)并不能理解和執(zhí)行人們使用的自然語言,而只能接受和執(zhí)行二進(jìn)制的指令。計(jì)算機(jī)能夠直接識(shí)別和執(zhí)行的這種指令,稱為機(jī)器指令。這種機(jī)器指令的集合就是機(jī)器語言指令系統(tǒng),簡稱為機(jī)器語言。為了解決某一特定問題,需要選用指令系統(tǒng)中的某些指令,這些指令按要求選取并組織起來就組成一個(gè)“程序”。一個(gè)程序是完成某一特定任務(wù)的一組指令序列,機(jī)器世界中真正存在的是二進(jìn)制程序。

用機(jī)器語言編寫的程序雖然能夠被計(jì)算機(jī)識(shí)別、直接執(zhí)行,但是機(jī)器語言本身是隨不同類型的機(jī)器而異,所以可移植性差,而且機(jī)器語言本身難學(xué)、難記、難懂、難修改,給使用者帶來極大的不便。于是,為了繞開機(jī)器指令,克服機(jī)器指令程序的缺陷,人們提出了程序設(shè)計(jì)語言的構(gòu)想,即使用人們熟悉的、習(xí)慣的語言符號(hào)來編寫程序,最好是直接使用人們交流的自然語言來編程。在過去的幾十年中,人們創(chuàng)造了許多介于自然語言和機(jī)器語言之間的程序設(shè)計(jì)語言。按語言的級(jí)別大致可分為:匯編語言(低級(jí))和高級(jí)語言(第三代、第四代、……)。

匯編語言的特點(diǎn)是使用一些“助記符號(hào)”來替代那些難懂難記的二進(jìn)制代碼,所以匯編語言相對(duì)于機(jī)器指令便于理解和記憶,但它和機(jī)器語言的指令基本上是一一對(duì)應(yīng),兩者都是針對(duì)特定的計(jì)算機(jī)硬件系統(tǒng)的,可移植性差,因此稱它們是“面向機(jī)器的低級(jí)語言”。為了直觀地了解匯編語言程序,下面給出一段實(shí)現(xiàn)X、Y兩個(gè)16位二進(jìn)制數(shù)相加的8086匯編程序:

;X,Y分別為16位二進(jìn)制數(shù),程序?qū)崿F(xiàn)X=X+Y(不考慮溢出)

DATA SEGMENT ;定義數(shù)據(jù)段開始

X DW 123H ;定義一個(gè)字變量(16位)X

Y DW 987H ;定義一個(gè)字變量(16位)Y

DATA ENDS ;定義數(shù)據(jù)段結(jié)束

CODE SEGMENT ;定義代碼段開始

ASSUME CS:CODE,DS:DATA ;建立段寄存器與各段之間的映射關(guān)系

START:MOV AX,DATA ;取DATA段地址送AX寄存器

MOV DS,AX ;將數(shù)據(jù)段段地址送數(shù)據(jù)段寄存器DS

MOV AX,Y ;取變量Y值送給寄存器AX

ADD X,AX ;將X的值與AX的內(nèi)容相加,結(jié)果送給X,實(shí)現(xiàn)X=X+Y

MOV AH,4CH ;將DOS調(diào)用的4CH功能號(hào)送8位寄存器AH

INT 21H ;執(zhí)行DOS功能調(diào)用,退出程序,回到DOS

CODE ENDS ;定義代碼段結(jié)束

END START ;源程序結(jié)束,主程序從標(biāo)號(hào)START開始

而高級(jí)語言類似自然語言(主要是英語),由專門的符號(hào)根據(jù)詞匯規(guī)則構(gòu)成單詞,由單詞根據(jù)句法規(guī)則構(gòu)成語句,每種語句有確切的語義并能由計(jì)算機(jī)解釋。高級(jí)語言包含許多英語單詞,有“自然化”的特點(diǎn);高級(jí)語言書寫的計(jì)算式接近于熟知的數(shù)學(xué)公式的規(guī)則。高級(jí)語言與機(jī)器指令完全分離,具有通用性,一條高級(jí)語言語句常常相當(dāng)于幾條或幾十條機(jī)器指令。所以高級(jí)語言的出現(xiàn),給程序設(shè)計(jì)從形式和內(nèi)容上都帶來了重大的變革,大大方便了程序的編寫,提高了可讀性。例如:BASIC、C、Visual Basic(簡稱VB)、Visual C++(簡稱VC++)、VB.NET、C#.NET、Java等都是高級(jí)語言。

高級(jí)語言一般能細(xì)分為第三代高級(jí)語言、第四代高級(jí)語言、……,分類依據(jù)是高級(jí)語言的邏輯級(jí)別、表達(dá)能力、接近自然語言的程度等。如Turbo C 2.0(簡稱TC)為第三代高級(jí)語言,而VB6.0、VC++6.0、C#、VB.NET、Java等可認(rèn)為是第四代高級(jí)語言。第四代高級(jí)語言一般是具有面向?qū)ο筇匦浴⒕哂锌焖倩蜃詣?dòng)生成部分應(yīng)用程序能力的高級(jí)語言,它表達(dá)能力強(qiáng),編寫程序效率高,更接近人的使用語言,高一級(jí)別的語言一般具有低一級(jí)別語言的語言表達(dá)能力。如下是輸入兩個(gè)整數(shù)并隨即顯示兩整數(shù)之和的Python語言程序:

num1=input("Input integer number1:"); #提示并輸入num1的值

num2=input("Input integer number2:"); #提示并輸入num2的值

num12=int(num1)+int(num2); #計(jì)算兩整數(shù)之和

print("The sum is%d\n"%num12); #屏幕上顯示兩整數(shù)之和

顯然,高級(jí)語言程序要比面向機(jī)器的低級(jí)語言易懂、明了、簡短得多。

應(yīng)該看到的是:高級(jí)語言是不斷發(fā)展變化的,不斷有新的更好的語言產(chǎn)生,同時(shí)也有舊且功能差而不再實(shí)用的語言逐步被淘汰。Python語言是比較新的語言,近年來Python語言使用者逐年增多,表現(xiàn)出具有強(qiáng)大的生命力與活力,該語言逐漸成為當(dāng)今最熱門、最實(shí)用的高級(jí)語言之一。

1.2 Python語言簡介

Python由Guido van Rossum于1989年底進(jìn)行開發(fā),經(jīng)過近30年的發(fā)展,Python已經(jīng)應(yīng)用到各行各業(yè)。Python是一種解釋型、面向?qū)ο蟆?dòng)態(tài)數(shù)據(jù)類型的高級(jí)程序設(shè)計(jì)語言。像Perl語言一樣,Python源代碼同樣遵循GNU通用公共許可證(General Public License,GPL)協(xié)議。

1.2.1 Python發(fā)展歷史

Python是由Guido van Rossum于20世紀(jì)80年代末和90年代初,在荷蘭國家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究所設(shè)計(jì)出來的。Guido希望創(chuàng)造一種C和Shell之間,功能全面,易學(xué)易用,可拓展的語言。Python本身也是由諸多其他語言發(fā)展而來的,這包括ABC、Modula-3、C、C++、Algol-68、SmallTalk、UNIX Shell和其他的腳本語言等。

1989年的圣誕節(jié),Guido開始編寫Python語言的編譯器。

1991年,第一個(gè)Python編譯器誕生。它是用C語言實(shí)現(xiàn)的,能夠調(diào)用C語言的庫文件。從一出生,Python已經(jīng)具有了類、函數(shù)、異常處理、包含表和詞典在內(nèi)的核心數(shù)據(jù)類型,以及以模塊為基礎(chǔ)的拓展系統(tǒng)。

Python1.0到Python3.6的簡要發(fā)展情況如表1-1所示。

1-1 Python1.0Python3.6的簡要發(fā)展情況

978-7-111-59261-7-Chapter01-1.jpg

Python 1.0增加了lambda表達(dá)式,map、filter和reduce函數(shù);1999年P(guān)ython的Web框架之祖———Zope1發(fā)布;Python2.0加入了內(nèi)存回收機(jī)制,構(gòu)成現(xiàn)在Python語言框架的基礎(chǔ);2004年,在Python2.4中目前最流行的WEB框架Django誕生。

現(xiàn)在Python是由一個(gè)核心開發(fā)團(tuán)隊(duì)在維護(hù),Guido van Rossum仍然參與其中。

2014年11月,Python2.7將在2020年停止支持的消息被發(fā)布,并且不會(huì)再發(fā)布2.8版本,建議用戶盡可能地遷移到3.4及后續(xù)版本。Python最初發(fā)布時(shí),在設(shè)計(jì)上有一些缺陷,因Unicode標(biāo)準(zhǔn)晚于Python出現(xiàn),所以一直以來對(duì)Unicode的支持并不完全,且對(duì)ASCII編碼支持的字符也十分有限。所以對(duì)中文的支持不是很好。

使用Python時(shí),如何獲取其具體版本呢?可以使用以下命令:Python-V。

譬如以上命令執(zhí)行結(jié)果為:Python3.6.0。

也可以在命令窗口(Windows中開始→運(yùn)行→輸入cmd)中輸入Python進(jìn)入交互式編程模式,查看到版本信息:

Python 3.6.0(v3.6.0:41df79263a11,Dec 23 2016,07:18:10)[MSG v.1900 32 bit(Intel)]on win32

Type"help","copyright","credits"or"license"for more information.

>>>

在Ubuntu等Linux環(huán)境,輸入python3啟動(dòng)Py3系統(tǒng)。情況類似如下。

qxz@ubuntu:~$python3

Python 3.5.2(default,Nov 17 2016,17:05:23)

[GCC 5.4.0 20160609]on linux

Type"help","copyright","credits"or"license"for more information.

>>>

說明:“>>>”為Python主提示符,表示等待交互輸入執(zhí)行各種命令或語句。

1.2.2 Python特點(diǎn)

Python是一種解釋型、面向?qū)ο蟆?dòng)態(tài)數(shù)據(jù)類型的高級(jí)程序設(shè)計(jì)語言,在計(jì)算機(jī)程序設(shè)計(jì)語言的歷史演變中具有劃時(shí)代的意義。Python作為一種功能強(qiáng)大的通用型語言,其優(yōu)點(diǎn)如下。

1)簡單易學(xué),免費(fèi)開源:Python的關(guān)鍵字比較少,語法有明確定義,代碼清晰,屬于FLOSS(自由/開放源碼軟件)之一,具有免費(fèi)開放性。

2)擁有豐富的庫:除了功能強(qiáng)大的標(biāo)準(zhǔn)庫外,Python還擁有諸如Matplotlib、Numpy等第三方庫,表現(xiàn)出易學(xué)易用的特色。

3)可嵌入性:能輕松地和其他語言聯(lián)結(jié)在一起,稱為膠水語言。

4)跨平臺(tái),可移植性:Python能輕松地移植到諸如Linux、Windows等平臺(tái)上。

5)互動(dòng)模式,解釋型語言:互動(dòng)模式的支持,可以從終端輸入并獲得結(jié)果的語言,互動(dòng)的測(cè)試和調(diào)試代碼片斷。解釋型語言,這意味著開發(fā)過程中沒有了編譯這個(gè)環(huán)節(jié)。類似于PHP和Perl語言。

6)便攜式:Python可以運(yùn)行在多種硬件平臺(tái)上,并具有相同的接口。

7)面向?qū)ο笳Z言:支持面向?qū)ο蟮木幊田L(fēng)格或代碼封裝在對(duì)象的編程技術(shù)。

Python是近年來十分流行的編程語言。作為腳本語言,Python盡管在速度上比編譯語言如C和C++等略有遜色,但其優(yōu)點(diǎn)突出,仍獲得了眾多專業(yè)和非專業(yè)人士的青睞和支持。

1.2.3 Python應(yīng)用場(chǎng)合

從動(dòng)畫設(shè)計(jì)到科學(xué)計(jì)算,從系統(tǒng)編程到原型開發(fā),從數(shù)據(jù)庫到網(wǎng)絡(luò)腳本,從機(jī)器人系統(tǒng)到美國國家宇航局NASA的數(shù)據(jù)加密,都有Python的用武之地。

Python已經(jīng)滲透到計(jì)算機(jī)科學(xué)與技術(shù)、統(tǒng)計(jì)分析、移動(dòng)終端開發(fā)、科學(xué)計(jì)算可視化、逆向工程與軟件分析、圖形圖像處理、人工智能、游戲設(shè)計(jì)與策劃、網(wǎng)站開發(fā)、數(shù)據(jù)爬取與大數(shù)據(jù)處理、密碼學(xué)、系統(tǒng)運(yùn)維、音樂編程、計(jì)算機(jī)輔助教育、醫(yī)藥輔助設(shè)計(jì)、天文信息處理、化學(xué)、生物學(xué)等眾多專業(yè)和領(lǐng)域。目前業(yè)內(nèi)幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用Python,如百度、騰訊等。互聯(lián)網(wǎng)公司廣泛使用Python來進(jìn)行的工作一般包括自動(dòng)化運(yùn)維、自動(dòng)化測(cè)試、大數(shù)據(jù)分析、網(wǎng)絡(luò)爬蟲、Web等。

更多案例可在Python官網(wǎng)上查閱到。

另外,Python還有多種類型的解釋器來支持其廣泛應(yīng)用,具體如下。

1)CPython,Python的官方版本,使用C語言實(shí)現(xiàn),使用最為廣泛。CPython會(huì)將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(pyc文件),然后運(yùn)行在Python虛擬機(jī)上。

2)Jython,Python的Java實(shí)現(xiàn),Jython會(huì)將Python代碼動(dòng)態(tài)編譯成Java字節(jié)碼,然后在JVM上運(yùn)行。

3)IronPython,Python的C#實(shí)現(xiàn),IronPython將Python代碼編譯成C#字節(jié)碼,然后在CLR上運(yùn)行(與Jython類似)。

4)PyPy,Python實(shí)現(xiàn)的Python,將Python的字節(jié)碼再編譯成機(jī)器碼。此編輯器能夠大大加快Python程序的運(yùn)行速度,可能會(huì)是Python的未來。

Python的解釋器很多,但使用最廣泛的是CPython。如果要和Java或.NET平臺(tái)交互,最好的辦法不是用Jython或IronPython,而是通過網(wǎng)絡(luò)調(diào)用來交互,確保各程序之間的獨(dú)立性。

1.3 安裝Python

Python可應(yīng)用于多平臺(tái),包括Windows、UNIX、Linux和Mac OS X等。一般的Linux發(fā)行版本都自帶Python,Mac OS X最新版也自帶Python,也就是已經(jīng)安裝好了,不需要再配置。用戶可以通過終端窗口輸入“Python”命令來查看本地是否已經(jīng)安裝Python以及Python的安裝版本。本節(jié)主要介紹在UNIX、Linux和Windows平臺(tái)安裝Python。

1.3.1 下載Python

Python最新源碼、二進(jìn)制文檔、新聞資訊等可以在Python的官網(wǎng)查看到,也可以在官網(wǎng)下載Python的文檔,可以下載HTML、PDF和PostScript等格式的文檔。

Python已經(jīng)被移植在許多操作系統(tǒng)平臺(tái)上。用戶需要下載適用于自己使用平臺(tái)的二進(jìn)制代碼,然后安裝Python。

較新的MAC(蘋果)系統(tǒng)都自帶有Python環(huán)境,但是自帶的Python版本一般為舊版本,可以通過Python官網(wǎng)鏈接查看MAC上Python的新版功能介紹及安裝說明。具體安裝略。

1.3.2 UNIX和Linux平臺(tái)安裝Python

以下為在UNIX和Linux平臺(tái)上安裝Python的簡單步驟。

1)打開Web瀏覽器訪問Python官網(wǎng)相應(yīng)下載網(wǎng)址。

2)選擇適用于UNIX/Linux的源碼壓縮包。

3)下載并解壓壓縮包。

4)如果需要自定義一些選項(xiàng),修改Modules/Setup。

5)執(zhí)行./configure腳本。

6)執(zhí)行make進(jìn)行編譯和執(zhí)行make install運(yùn)行安裝。

執(zhí)行以上操作后,Python會(huì)安裝在/usr/local/bin目錄中,Python庫安裝在/usr/local/lib/PythonXX,XX為用戶使用的Python的版本號(hào)。

說明:目前的Linux版本一般都默認(rèn)安裝了Python2.7或Python3.x。

1.3.3 在Windows平臺(tái)安裝Python

以下為在Windows平臺(tái)上安裝Python 3.6.0的簡單步驟。

1)打開Web瀏覽器訪問Python官網(wǎng)相應(yīng)下載網(wǎng)址。

2)在下載列表中選擇Windows平臺(tái)安裝包,安裝包的格式為Python-XYZ.msi文件,XYZ為用戶要安裝的版本號(hào)。

3)要使用安裝程序Python-XYZ.msi,Windows系統(tǒng)必須支持Microsoft Installer 2.0搭配使用。只要保存安裝文件到本地計(jì)算機(jī),然后運(yùn)行它(當(dāng)然機(jī)器要支持MSI,Windows XP和更高版本已經(jīng)有MSI)。

4)下載后,雙擊下載包(如Python-3.6.0.exe),進(jìn)入Python安裝向?qū)В惭b非常簡單,只需要使用默認(rèn)的設(shè)置一直單擊“Next”按鈕,直到安裝完成即可。

下面是安裝過程圖示(見圖1-1~圖1-3)。

978-7-111-59261-7-Chapter01-2.jpg

圖1-1 開始安裝Python 3.6.0

978-7-111-59261-7-Chapter01-3.jpg

圖1-2 安裝進(jìn)行中

安裝完成后開始菜單中有Python 3.6程序組,如圖1-4所示。

978-7-111-59261-7-Chapter01-4.jpg

圖1-3 已成功安裝Python 3.6.0

978-7-111-59261-7-Chapter01-5.jpg

圖1-4 Python 3.6程序組

選擇“IDLE(Python 3.6 32-bit)”菜單命令,啟動(dòng)IDLE(自帶Python GUI)運(yùn)行界面,

如圖1-5所示。

978-7-111-59261-7-Chapter01-6.jpg

圖1-5 IDLE(Python 3.6 32-bit)運(yùn)行界面

選擇“Python 3.6(32-bit)”菜單命令,啟動(dòng)如圖1-6所示Python命令窗口。

978-7-111-59261-7-Chapter01-7.jpg

圖1-6 Python 3.6命令窗口

選擇“Python 3.6 Manuals(32-bit)”菜單命令,啟動(dòng)如圖1-7所示Python 3.6.0幫助文檔。

978-7-111-59261-7-Chapter01-8.jpg

圖1-7 Python 3.6.0幫助文檔

選擇“Python 3.6 Module Docs(32-bit)”菜單命令,啟動(dòng)如圖1-8所示Python模塊文檔。

其他操作系統(tǒng)平臺(tái)下安裝Python后,其運(yùn)行情況與Windows平臺(tái)下的情況類似,這里不再贅述。

978-7-111-59261-7-Chapter01-9.jpg

圖1-8 Python 3.6模塊文檔

1.3.4 環(huán)境變量配置

程序和可執(zhí)行文件可以在許多目錄中,而這些路徑很可能不在操作系統(tǒng)提供可執(zhí)行文件的搜索路徑中。Path(路徑)存儲(chǔ)在環(huán)境變量中,這是由操作系統(tǒng)維護(hù)的一個(gè)命名的字符串。這些變量包含可用的命令行解釋器和其他程序的路徑信息。

UNIX或Windows中路徑變量為PATH(UNIX區(qū)分大小寫,Windows則不區(qū)分)。

1.在UNIX/Linux設(shè)置環(huán)境變量

●在csh shell:輸入setenv PATH"$PATH:/usr/local/bin/Python"

●在bash shell(Linux):輸入exportPATH="$PATH:/usr/local/bin/Python"

●在sh或者ksh shell:輸入PATH="$PATH:/usr/local/bin/Python"

注意:/usr/local/bin/Python是Python的安裝目錄。

2.在Windows設(shè)置環(huán)境變量

在環(huán)境變量中添加Python目錄,在命令提示框中(cmd)輸入path%path%;C:\Python并按<Enter>鍵。這里假設(shè)C:\Python是Python的安裝目錄。

1.4 常用編輯器

編寫Python程序需要使用源程序編輯器。這里介紹幾種常用的Python集成開發(fā)環(huán)境(Python IDE),比較推薦PyCharm,當(dāng)然可以根據(jù)自己喜好來選擇適合的Python IDE。

1.4.1 IDLE

在“開始”菜單中,選擇“IDLE(Python 3.6 32-bit)”菜單命令,啟動(dòng)IDLE(如圖1-5所示),這是一個(gè)Python編寫的GUI程序,在此可以輸入、運(yùn)行Python命令或程序,能完成基本的編輯器與解釋器功能。下面輸出一條Python字符串,計(jì)算兩個(gè)變量相加的值,并輸出在屏幕上面。

如圖1-9所示是Windows平臺(tái)下Python IDLE運(yùn)行情況。

978-7-111-59261-7-Chapter01-10.jpg

圖1-9 Windows平臺(tái)下Python 3.6.0 IDLE運(yùn)行窗口

通常在Linux類系統(tǒng),如:Ubuntu、CentOS都已經(jīng)默認(rèn)隨系統(tǒng)安裝好Python程序。在此類系統(tǒng)中,可以在Terminal(組合鍵<Ctrl+Alt+T>)中輸入ls/usr/bin|grep python進(jìn)行查看。

如果想運(yùn)行python 2.7,直接在終端輸入python即可。如果想運(yùn)行python 3.5,直接在終端輸入python3即可。

Ubuntu中的Python是沒有自帶IDLE的,可以在終端輸入:sudo apt-get install idle-py?thon3.5,進(jìn)行python 3.5版本的IDLE的安裝,安裝好之后在/usr/share/applications就可以找到IDLE的圖標(biāo),將其復(fù)制到桌面上,以后直接在桌面雙擊就可以啟動(dòng)。或者在終端輸入:/usr/bin/idle-python3.5即可啟動(dòng)。如圖1-10所示。

978-7-111-59261-7-Chapter01-11.jpg

圖1-10 Ubuntu中的Python 3.5.2 Shell運(yùn)行窗口

這個(gè)IDLE也稱為Python解釋器。Python編程就可以從這個(gè)IDLE編輯器中開始,在入門之后,可以選擇更多自己喜歡的Python編輯器。

1.4.2 PyCharm

PyCharm是由JetBrains打造的一款Python IDE。PyCharm具備一般Python IDE的功能,比如調(diào)試、語法高亮、項(xiàng)目管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測(cè)試、版本控制等。另外,PyCharm還提供一些很好的功能用于Django(一個(gè)Web應(yīng)用框架)開發(fā)。

請(qǐng)自行在網(wǎng)上搜索,從PyCharm官網(wǎng)下載PyCharm。

PyCharm針對(duì)Windows、MscOS、Linux分別有PyCharm Professional(專業(yè))與PyCharm Community(社區(qū)版,是免費(fèi)開源的版本)兩個(gè)版本可選擇安裝。下面是在Windows7下雙擊“pycharm-community-2017.1.exe”運(yùn)行安裝PyCharm Community Edition的簡單過程。

1)進(jìn)入安裝歡迎界面,如圖1-11所示。單擊“Next”按鈕。

2)進(jìn)入安裝路徑界面,如圖1-12所示。單擊“Browse”按鈕可以改變軟件的默認(rèn)安裝目錄,設(shè)置完成后單擊“Next”按鈕。

978-7-111-59261-7-Chapter01-12.jpg

圖1-11 PyCharm安裝歡迎界面

978-7-111-59261-7-Chapter01-13.jpg

圖1-12 PyCharm安裝目錄設(shè)定

3)進(jìn)入安裝菜單文件夾界面,如圖1-13所示。在此界面可以輸入新的程序組文件夾名,設(shè)置完成后單擊“Next”按鈕。

4)進(jìn)入安裝選項(xiàng)界面。如圖1-14所示,這里可以指定是32位還是64位程序快捷方式,可以指定是否與“.py”文件關(guān)聯(lián)。設(shè)置完成后單擊“Next”按鈕。

978-7-111-59261-7-Chapter01-14.jpg

圖1-13 PyCharm安裝菜單文件夾

978-7-111-59261-7-Chapter01-15.jpg

圖1-14 PyCharm安裝選項(xiàng)

5)進(jìn)入安裝進(jìn)程界面,如圖1-15所示。完成后單擊“Next”按鈕。

6)顯示Pycharm安裝完成并可運(yùn)行,如圖1-16所示。單擊“Finish”按鈕則完成安裝過程,如果選中“Run PyCharm Community Edition”復(fù)選框,則會(huì)首次運(yùn)行PyC?harm。

978-7-111-59261-7-Chapter01-16.jpg

圖1-15 PyCharm安裝進(jìn)程中

978-7-111-59261-7-Chapter01-17.jpg

圖1-16 PyCharm安裝完成頁面

7)PyCharm運(yùn)行效果如圖1-17所示,在這里可以進(jìn)行新建Python源程序文件,輸入源程序并調(diào)試運(yùn)行等一系列操作。

978-7-111-59261-7-Chapter01-18.jpg

圖1-17 PyCharm運(yùn)行效果圖

1.4.3 Eclipse+PyDev

Eclipse+PyDev構(gòu)成Python的Eclipse編程環(huán)境,下面是安裝、設(shè)置與使用情況。

1.安裝Eclipse

Eclipse可以在它的官方網(wǎng)站Eclipse.org找到并下載,通常可以選擇適合自己的Eclipse版本,比如Eclipse Classic。下載完成后解壓到自己想安裝的目錄中即可。

當(dāng)然在執(zhí)行Eclipse之前,用戶必須確認(rèn)安裝了Java運(yùn)行環(huán)境,即必須安裝JRE或JDK,可以到Java官網(wǎng)找到JRE下載并安裝。

2.安裝PyDev

1)運(yùn)行Eclipse之后,選擇Help→Install New Software命令,如圖1-18所示,彈出“Install”對(duì)話框。

978-7-111-59261-7-Chapter01-19.jpg

圖1-18 選擇Install New Software菜單項(xiàng)

2)單擊“Add”按鈕,彈出“Add Site”對(duì)話框,在“Location”文本框中添加PyDev的安裝地址(框中會(huì)默認(rèn)顯示),如圖1-19所示。

978-7-111-59261-7-Chapter01-20.jpg

圖1-19 指定PyDev的安裝網(wǎng)址

3)完成后單擊“Add Site”對(duì)話框中的“OK”按鈕,接著單擊PyDev的“+”,展開PyDev的節(jié)點(diǎn),選擇相應(yīng)的軟件包選項(xiàng),然后單擊“Next”按鈕進(jìn)行安裝,如圖1-20所示。

978-7-111-59261-7-Chapter01-21.jpg

圖1-20 選擇PyDev的安裝項(xiàng)

4)安裝完成后,重啟Eclipse即可。

3.設(shè)置PyDev

1)安裝完成后,還需要對(duì)PyDev進(jìn)行設(shè)置。選擇Window→Preferences命令,彈出“Preferences”對(duì)話框,如圖1-21所示。設(shè)置Python的路徑,從PyDev的Interpreter→Python頁面單擊“New”按鈕,如圖1-21所示。

978-7-111-59261-7-Chapter01-22.jpg

圖1-21 PyDev安裝后的設(shè)置

2)此時(shí)會(huì)彈出“Select interpreter”對(duì)話框,在其中設(shè)置Python的安裝位置,如圖1-22所示。

978-7-111-59261-7-Chapter01-23.jpg

圖1-22 選擇Python解釋器的安裝位置

3)完成之后單擊“OK”按鈕即完成PyDev的設(shè)置,就可以開始使用。

4.建立Python Project

1)要?jiǎng)?chuàng)建一個(gè)項(xiàng)目,選擇File→New菜單命令,彈出“New”對(duì)話框,在其中選擇Py?Dev Project,如圖1-23所示,然后單擊“Next”按鈕。

978-7-111-59261-7-Chapter01-24.jpg

圖1-23 選擇PyDev項(xiàng)目類型

2)此時(shí)會(huì)彈出一個(gè)新窗口,填寫Project Name以及項(xiàng)目保存地址,如圖1-24所示,單擊“Next”按鈕完成項(xiàng)目的創(chuàng)建。

978-7-111-59261-7-Chapter01-25.jpg

圖1-24 指定PyDev項(xiàng)目名稱與保存目錄等

5.創(chuàng)建新的PyDev Module

僅有項(xiàng)目是無法執(zhí)行的,必須創(chuàng)建新的PyDev Module。

1)選擇File→New→PyDev Module菜單命令,如圖1-25所示。

978-7-111-59261-7-Chapter01-26.jpg

圖1-25 選擇創(chuàng)建新的PyDev Module

2)在彈出的窗口中選擇文件存放位置以及Module Name,注意在“Name”文本框中不用加“.py”,系統(tǒng)會(huì)自動(dòng)添加。然后單擊“Finish”按鈕完成創(chuàng)建,如圖1-26所示。

978-7-111-59261-7-Chapter01-27.jpg

圖1-26 指定要?jiǎng)?chuàng)建的PyDev Module名等

輸入如圖1-27所示的代碼。

6.執(zhí)行程序

程序?qū)懲旰缶涂梢蚤_始執(zhí)行程序,在上方的工具欄單擊“執(zhí)行”按鈕978-7-111-59261-7-Chapter01-28.jpg (內(nèi)含白色小三角形的綠色圓圈的工具按鈕)。之后會(huì)彈出一個(gè)選擇執(zhí)行方式的窗口,通常會(huì)選擇Python Run,開始執(zhí)行程序。

當(dāng)然還有非常多的Python IDE,更多Python IDE請(qǐng)查閱wiki網(wǎng)站等。

978-7-111-59261-7-Chapter01-29.jpg

圖1-27 編輯PyDev Module源程序

1.5 Python語法概述

Python語言與Perl、C和Java等語言有許多相似之處,但是也存在一些差異。Python程序可以交互命令式解釋執(zhí)行或腳本式解釋運(yùn)行。

說明:如無特殊說明,本書所說“Python 2”默認(rèn)指“Python 2.7.6”;“Python 3”默認(rèn)指“Python 3.6.0”。Python 2.x是指Python 2的多種版本。

1.交互式解釋執(zhí)行

Python解釋器的交互模式,提示窗口如下:

$ python #這里$提示符,表示是在Linux環(huán)境下運(yùn)行Python

Python 2.7.6(default,Mar 22 2014,22:59:56)

[GCC 4.8.2]on linux2

Type"help","copyright","credits"or"license"for more information.

>>>

在Python“>>>”提示符右邊輸入以下命令信息,然后按<Enter>鍵查看運(yùn)行效果:

>>> print("Hello,Python!"); #在Python 2.x中也可輸入print"Hello,Python!";

輸出結(jié)果:Hello,Python!

2.腳本式解釋運(yùn)行

通過腳本源程序文件調(diào)用解釋器執(zhí)行腳本代碼,直到腳本執(zhí)行完畢。當(dāng)腳本執(zhí)行完成后,解釋器不再有效。所有Python程序文件將以“py”為擴(kuò)展名。

【例1-1】寫一個(gè)簡單的Python腳本程序。將print("Hello,Python!");源代碼復(fù)制粘貼或輸入到test.py文件中。

這里,假設(shè)已經(jīng)設(shè)置了Python解釋器PATH變量。使用以下命令運(yùn)行程序:

$ python test.py #python-h可獲得幫助信息

輸出結(jié)果:Hello,Python!

在Linux系統(tǒng)下,用另一種方式來執(zhí)行Python腳本。修改test.py文件,增加一條Python解釋器指示指令“#!/usr/bin/python”,如下所示:

#!/usr/bin/python

print("Hello,Python!");

這里,假定Python解釋器在/usr/bin目錄中,使用以下命令執(zhí)行腳本文件:

$ chmod +x test.py #為程序文件test.py添加可執(zhí)行權(quán)限

$./test.py #類似Linux shell腳本方式解釋執(zhí)行Python源程序

輸出結(jié)果:Hello,Python!

默認(rèn)情況下,Python 3源碼程序文件以UTF-8編碼,所有字符串都是Unicode字符串。當(dāng)然也可以為源碼文件指定不同的編碼:

#-?-coding:utf-8-?-

用來指定文件編碼為UTF-8。又例如:

#-?-coding:gb2312-?- #為文件指定gb2312編碼方式

print("Python學(xué)習(xí)中……") #命令中可以使用漢字了

1.5.1 程序結(jié)構(gòu)特點(diǎn)

Python的程序由包(對(duì)應(yīng)文件夾)、模塊(一個(gè)Python文件)、函數(shù)和類(存在于Python文件)等組成。包是由一系列模塊組成的集合,模塊是處理某一類問題的函數(shù)和類等的集合。包的結(jié)構(gòu)如圖1-28所示。

注意:包中必須至少含有一個(gè)__init__.py文件,該文件的內(nèi)容可以為空,用于標(biāo)識(shí)當(dāng)前文件夾是一個(gè)包。

1.Python程序的構(gòu)架

Python程序的構(gòu)架是指將一個(gè)程序分割為源代碼文件的集合以及將這些部分連接在一起的方法。Python的程序構(gòu)架如圖1-29所示。

978-7-111-59261-7-Chapter01-30.jpg

圖1-28 Python包結(jié)構(gòu)示意圖

978-7-111-59261-7-Chapter01-31.jpg

圖1-29 Python程序的構(gòu)架示意圖

一個(gè)Python程序就是一個(gè)模塊的系統(tǒng)。它有一個(gè)頂層文件(啟動(dòng)后可運(yùn)行程序,具體說明見后面“2.模塊”)以及多個(gè)模塊文件(用來導(dǎo)入工具庫)組成。

說明:標(biāo)準(zhǔn)庫模塊是Python中自帶的實(shí)用模塊,也稱為標(biāo)準(zhǔn)鏈接庫。Python大約有200多個(gè)標(biāo)準(zhǔn)模塊,包含與平臺(tái)不相關(guān)的常見程序設(shè)計(jì)任務(wù),如操作系統(tǒng)接口、對(duì)象永久保存、文字匹配模式、網(wǎng)絡(luò)和Internet腳本、GUI建構(gòu)等。Python除了關(guān)鍵字、內(nèi)置的類型和函數(shù)(Builtins),更多的功能是通過模塊(Modules)來提供的。

注意:這些模塊工具都不算是Python語言的組成部分,但可以在任何安裝了標(biāo)準(zhǔn)Python的情況下,導(dǎo)入適當(dāng)?shù)哪K來使用。

2.模塊

模塊是Python中最高級(jí)別的組織單元,它將程序代碼和數(shù)據(jù)封裝起來以便重用。其實(shí),每一個(gè)以“py”為擴(kuò)展名的Python文件都是一個(gè)模塊。模塊的3個(gè)角色如下。

1)代碼重用。

2)系統(tǒng)命名空間的劃分(模塊可理解為變量名封裝,即模塊就是命名空間)。

3)實(shí)現(xiàn)共享服務(wù)和共享數(shù)據(jù)。

下面介紹模塊的一些相關(guān)概念。

程序和模塊:Python中,程序是作為一個(gè)主體的、頂層的文件來構(gòu)造的,配合有零個(gè)或多個(gè)支持的文件,而后者這些文件都可以稱作模塊(頂層的文件也可以作為模塊使用,但一般情況不作為模塊)。

頂層文件:包含了程序主要的控制流程,即需要運(yùn)行來啟動(dòng)應(yīng)用的文件。

模塊文件:可看作是工具的倉庫(即裝滿了工具),這些工具是用來收集頂層文件(或其他可能的地方)使用的組件。

頂層文件與模塊文件:頂層文件使用了在模塊文件中定義的工具,而這些模塊也使用了其他模塊所定義的工具。

模塊的組成:模塊包含變量、函數(shù)、類以及其他的模塊(如果導(dǎo)入的話),而函數(shù)也有自己的局部變量。

如圖1-30所示描述了模塊內(nèi)的情況以及與其他模塊的交互,即模塊的執(zhí)行環(huán)境。

978-7-111-59261-7-Chapter01-32.jpg

圖1-30 模塊及其交互示意

模塊可以被導(dǎo)入,模塊也會(huì)導(dǎo)入和使用其他模塊,而這些模塊可以是用Python或其他語言(如C語言)寫成的。

3.import(導(dǎo)入)

一個(gè)文件可通過導(dǎo)入一個(gè)模塊(文件)讀取這個(gè)模塊的內(nèi)容,即導(dǎo)入從本質(zhì)上講,就是在一個(gè)文件中載入另一個(gè)文件,并且能夠讀取那個(gè)文件的內(nèi)容。一個(gè)模塊內(nèi)的內(nèi)容通過這樣的特性(object.attribute)能夠被外界使用。導(dǎo)入是Python中程序結(jié)構(gòu)的重點(diǎn)所在。

(1)import模塊的4種方式

1)importX:導(dǎo)入模塊X,并在當(dāng)前命名空間(Namesapce)創(chuàng)建該模塊的引用。可以使用X.name引用定義在模塊X中的屬性。

2)fromXimport?:導(dǎo)入模塊X,并在當(dāng)前命名空間,創(chuàng)建該模塊中所有公共對(duì)象(名字不以__開頭)的引用。即用戶能使用普通名字(直接是name)去引用模塊X中的屬性,但是因?yàn)閄本身沒有定義,所以不能使用X.name這種方式。并且如果命名空間中原來有同名的name定義時(shí),它將會(huì)被新的name取代。

3)fromXimporta,b,c:導(dǎo)入模塊X,并在當(dāng)前命名空間創(chuàng)建該模塊給定對(duì)象的引用。

4)X=__import__(′X′):類似于import X,區(qū)別在于該方式顯式指定了X為當(dāng)前命名空間中的變量。使用方法同importX。

(2)導(dǎo)入import模塊時(shí),Python所做的行為

導(dǎo)入import模塊時(shí),首先,Python解釋器會(huì)檢查moduleregistry(sys.modules)部分,查看是否該模塊先前就已經(jīng)導(dǎo)入,如果sys.modules中已經(jīng)存在(即已注冊(cè)),則使用當(dāng)前存在的模塊對(duì)象即可。如果sys.modules中還不存在,則:①創(chuàng)建一個(gè)新的、空的模塊對(duì)象(本質(zhì)上是一個(gè)字典);②在sys.modules字典中插入該模塊對(duì)象;③加載該模塊代碼所對(duì)應(yīng)的對(duì)象(如果需要,可以先編譯好(編成位碼))。

然后在新的模塊命名空間、執(zhí)行該模塊代碼對(duì)象(Code Object)。所有由該代碼指定的變量均可以通過該模塊對(duì)象引用。

注意:上述步驟只有在模塊第一次執(zhí)行時(shí)才會(huì)執(zhí)行。在這之后,導(dǎo)入相同模塊時(shí),會(huì)跳過這些步驟,而只提取內(nèi)存中已加載的模塊對(duì)象。這是個(gè)有意設(shè)計(jì)的結(jié)果。因?yàn)閷?dǎo)入(找文件→將其編譯成字節(jié)碼→運(yùn)行代碼)是一個(gè)開銷很大的操作,以至于每個(gè)程序運(yùn)行不能夠重復(fù)多于一次。若想要Python在同一次會(huì)話中再次運(yùn)行文件(不停止和重新啟動(dòng)會(huì)話),需要調(diào)用內(nèi)置的reload(重載)函數(shù)(該函數(shù)返回值為一個(gè)Python模塊對(duì)象)。

(3)import搜索路徑順序

import模塊搜索路徑順序如下。

1)程序的主目錄:即程序(頂層)文件所在的目錄(有時(shí)候不同于當(dāng)前工作目錄(指啟動(dòng)程序時(shí)所在目錄))。

2)PYTHONPATH(環(huán)境變量)預(yù)設(shè)置的目錄。

3)標(biāo)準(zhǔn)鏈接庫目錄。

4)任何.pth文件的內(nèi)容(如果存在的話):安裝目錄下找到該文件,以行的形式加入所需要的目錄即可。

以上4方面組合起來就變成了sys.path,其保存了模塊搜索路徑在計(jì)算機(jī)上的實(shí)際配置,可以通過打印內(nèi)置的sys.path列表來查看這些路徑。導(dǎo)入時(shí),Python會(huì)由左至右搜索列表中的每個(gè)目錄,直到找到對(duì)應(yīng)的模塊為止。

其中搜索路徑的1)和3)是系統(tǒng)自動(dòng)定義的,而2)、4)可以用于拓展路徑,從而加入自己的源代碼目錄。另外,也可以使用sys.path在Python程序運(yùn)行時(shí)臨時(shí)修改模塊搜索路徑。如:

import sys;sys.path.append(′C:\\mydir′)

注意:以上sys.path的設(shè)置方法只是在程序運(yùn)行時(shí)臨時(shí)生效的,一旦程序結(jié)束,不會(huì)被保留下來。而前面介紹的4種路徑配置方式則會(huì)在操作系統(tǒng)中永久保存下來。

4.簡單的Python程序

【例1-2】簡單的Python程序(包含foo.py和demo.py兩個(gè)文件)。

978-7-111-59261-7-Chapter01-33.jpg

執(zhí)行這個(gè)程序:Python demo.py

輸出結(jié)果:

a string

258

Python將?.py文件視為一個(gè)模塊,這些模塊中有一個(gè)主模塊,也就是程序運(yùn)行的入口。在本例中,主模塊是demo.py。

1.5.2 程序語法規(guī)則

下面先總體介紹Python的語法規(guī)則。

1.字符集

Python 2.x的默認(rèn)編碼是ASCII,不能識(shí)別中文字符,需要顯式指定字符編碼;Python3.x的默認(rèn)編碼為Unicode,可以識(shí)別中文字符。

為表達(dá)字符或字符串的需要,Python程序中常要用到一類字符的特殊表示方法,叫作轉(zhuǎn)義字符或轉(zhuǎn)義符。Python中的轉(zhuǎn)義符如表1-2和表1-3所示。

1-2 轉(zhuǎn)義符

978-7-111-59261-7-Chapter01-34.jpg

1-3 字符串文本中的轉(zhuǎn)義符

978-7-111-59261-7-Chapter01-35.jpg

下面是輸出若干轉(zhuǎn)義符的示例:

print(′\123′) #S,大寫字母S

print(′\x02′) #,ASCII 2對(duì)應(yīng)的控制符

print("\N{SOLIDUS}") #/,斜杠符/

print("\N{BLACK SPADE SUIT}") #?,黑桃符

print(′\u3333′) #978-7-111-59261-7-Chapter01-36.jpg ,某中日韓字符集兼容中的字符

print(′\U00004e60′) #習(xí),漢字“習(xí)”

2.Python標(biāo)識(shí)符

在Python語言中,變量名、函數(shù)名、對(duì)象名等同樣是通過標(biāo)識(shí)符來命名的。標(biāo)識(shí)符第一個(gè)字符必須是字母表中字母或下畫線,標(biāo)識(shí)符的其他的部分有字母、數(shù)字和下畫線組成。Python中的標(biāo)識(shí)符是區(qū)分大小寫的。在Python3.x中,非-ASCII標(biāo)識(shí)符也是允許的,譬如:data_人數(shù)=100中,“data_人數(shù)”為含漢字的標(biāo)識(shí)符,但一般不推薦這樣用。

以下畫線開頭的標(biāo)識(shí)符是有特殊意義的。以單下畫線開頭(如:_foo)的標(biāo)識(shí)符表示不能直接訪問的類屬性,需通過類提供的接口進(jìn)行訪問,不能用"from xxx import?"而導(dǎo)入;以雙下畫線開頭的(如:__foo)標(biāo)識(shí)符表示類的私有成員;以雙下畫線開頭和結(jié)尾的(__foo__)標(biāo)識(shí)符表示Python中特殊方法專用的標(biāo)識(shí),如__init__()代表類的構(gòu)造函數(shù)。

3.Python保留字

保留字即關(guān)鍵字,保留字不能用作常數(shù)或變數(shù),也不能用作任何其他標(biāo)識(shí)符名稱。

Python的標(biāo)準(zhǔn)庫提供了一個(gè)keyword module,可以輸出當(dāng)前版本的所有關(guān)鍵字:

>>>import keyword

>>>keyword.kwlist #這里輸出的是Python 3.5.2版本的關(guān)鍵字

[′False′,′None′,′True′,′and′,′as′,′assert′,′break′,′class′,′continue′,′def′,′del′,′

elif′,′else′,′except′,′finally′,′for′,′from′,′global′,′if′,′import′,′in′,′is′,′lambda′,

′nonlocal′,′not′,′or′,′pass′,′raise′,′return′,′try′,′while′,′with′,′yield′]

4.行與縮進(jìn)

較其他語言,Python最具特色的就是使用縮進(jìn)來表示代碼塊(又稱代碼組),而不使用大括號(hào)({})來控制類、函數(shù)以及其他邏輯判斷代碼塊。

像if、while、def和class這樣的復(fù)合語句,首行以關(guān)鍵字開始,以冒號(hào)(:)結(jié)束,該行之后的一行或多行代碼構(gòu)成代碼塊。將首行及后面的代碼塊統(tǒng)稱為一個(gè)子句(clause)。

代碼塊縮進(jìn)的空格數(shù)是可變的,但是同一個(gè)代碼塊的語句必須包含相同的縮進(jìn)空格數(shù),

這個(gè)必須嚴(yán)格執(zhí)行。如下所示:

978-7-111-59261-7-Chapter01-37.jpg

以下代碼在執(zhí)行時(shí)將會(huì)產(chǎn)生錯(cuò)誤:

978-7-111-59261-7-Chapter01-38.jpg

因此,在Python的代碼塊中必須使用相同數(shù)目的行首縮進(jìn)空格數(shù)才行。

5.多行語句

Python語句中一般以新行(換行符)作為語句的結(jié)束符。

但是用戶可以使用反斜杠(\)將一行的語句分為多行顯示,如下所示:

total=item_one+\

item_two+\

item_three

語句中包含[],{}或()括號(hào)就不需要使用多行連接符(自動(dòng)判斷是多行的)。如:

978-7-111-59261-7-Chapter01-39.jpg

6.同一行顯示多條語句

Python可以在同一行中使用多條語句,語句之間使用英文分號(hào)(;)分割,例如:

import sys;x=′foo′;.write(x+′\n′); #一行有3個(gè)語句

7.空行

函數(shù)之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數(shù)入口之間也用一行空行分隔,以突出函數(shù)入口的開始。空行與代碼縮進(jìn)不同,空行并不是Python語法的一部分。書寫時(shí)不插入空行,Python解釋器運(yùn)行也不會(huì)出錯(cuò)。但是空行的作用在于分隔兩段不同功能或含義的代碼,便于日后代碼的維護(hù)或重構(gòu)。

8.Python引號(hào)

Python接收單引號(hào)(′)、雙引號(hào)(")、三引號(hào)(′′′或""")來表示字符串,引號(hào)的開始與結(jié)束必須是相同種類的引號(hào)。其中三引號(hào)可以由多行組成,是編寫多行文本的快捷語法。

word=′word′

sentence="This is a sentence."

paragraph="""This is a paragraph.It is

made up of multiple lines and sentences."""

三引號(hào)常用于文檔字符串,在文件的特定地點(diǎn)被當(dāng)作注釋。

9.Python注釋

Python中單行注釋采用#開頭(可以在語句或表達(dá)式行末)。塊注釋(多行注釋)也可采用多行#開頭來表示,如:

#!/usr/bin/python #指定Linux系統(tǒng)中Python解釋器位置,后續(xù)程序?qū)⑹÷栽撝噶?/p>

#First comment

print("Hello,Python!"); #second comment

輸出結(jié)果:Hello,Python!

塊注釋(多行注釋):

#This is a comment.

#This is a comment,too.

#This is a comment,too.

#I said that already.

Python中多行注釋,也可用3個(gè)單引號(hào)(′′′)或者3個(gè)雙引號(hào)(""")將注釋括起來。例如:

""" This is a comment.

This is a comment,too.

This is a comment,too.

I said that already. """

10.Python的數(shù)值類型與字符串

(1)數(shù)值類型

Python中有4種數(shù)值類型:整數(shù)、長整數(shù)、浮點(diǎn)數(shù)和復(fù)數(shù)(具體見第2章)。

●整數(shù),如1。

●長整數(shù)是比較大的整數(shù)。

●浮點(diǎn)數(shù),如1.23、3e-2。

●復(fù)數(shù),如1+2j、1.1+2.2j。

(2)字符串

Python用單引號(hào)(′)、雙引號(hào)(")或三引號(hào)(′′′或""")括起字符序列構(gòu)成字符串。關(guān)于字符串:

●Python中使用單引號(hào)和雙引號(hào)效果相同。

●使用三引號(hào)(′′′或""")可以指定一個(gè)多行字符串。

●′\′是用于字符串的轉(zhuǎn)義符。

●自然字符串,通過在字符串前加r或R來表示,如r"this is a line with\n"則\n會(huì)顯示,并不再是換行。

●Python允許處理Unicode字符串,只要前面加前綴u或U,如u"this is a nunicode string"。

●字符串是不可改變的。

●Python可以按字面意義級(jí)聯(lián)來形成新字符串,如"this""is""string"會(huì)自動(dòng)轉(zhuǎn)換為this is string字符串。

1.6 應(yīng)用實(shí)例

1.Python 基礎(chǔ)模塊之OS模塊的應(yīng)用實(shí)例

【例1-3】利用OS模塊在Linux或Windows環(huán)境中當(dāng)前目錄下創(chuàng)建子目錄與文件,并由Python解釋執(zhí)行。

OS意即操作系統(tǒng)(Operating System),所以O(shè)S模塊肯定就是操作系統(tǒng)相關(guān)的功能,OS模塊可以處理文件和目錄這些日常需要做的操作,譬如:顯示當(dāng)前目錄下所有文件、刪除某個(gè)文件、獲取文件大小等。

另外,OS模塊不受平臺(tái)限制,例如:當(dāng)用戶要在Linux中顯示當(dāng)前命令時(shí)就要用到pwd命令,而Windows中cmd命令行下就要用cd命令,這時(shí)候使用Python中OS模塊的os.path.abspath(name)功能,不管是Linux或者Windows都可以獲取當(dāng)前的絕對(duì)路徑。

下面是本例分解成7個(gè)步驟的解答。

>>>import os #先導(dǎo)入os模塊

(1)os.name #顯示當(dāng)前使用的平臺(tái)(操作系統(tǒng))

>>>os.name #若′posix′表示Linux 或 #若′nt′表示W(wǎng)indows

(2)os.getcwd() #顯示當(dāng)前Python腳本工作路徑

>>>os.getcwd() #′/home/qxz′或′c:\\python3632′#獲取當(dāng)前目錄路徑

(3)os.listdir("dirname")#以列表方式列出指定目錄下的所有文件和子目錄

>>>os.listdir(".") #以列表形式列出當(dāng)前目錄里的文件和子目錄,"."表示當(dāng)前目錄

(4)os.makedirs("dirname1/dirname2") #可遞歸地創(chuàng)建多層文件目錄

>>>os.makedirs("/home/qxz/py")或os.makedirs("c:\\python3632\\py") 創(chuàng)建文件夾py

(5)os.chdir("dirname") #修改當(dāng)前目錄

>>>os.chdir("./py")或os.chdir(".\\py") #修改當(dāng)前目錄為".\py"

(6)os.system("bash或windows cmd命令") #運(yùn)行os命令并顯示

>>>os.system("vi test.py")或os.system("notepad test.py") #運(yùn)行系統(tǒng)文本文件編輯器對(duì)#test.py源程序創(chuàng)建(不存在時(shí))或編輯

(7)運(yùn)行Python源程序。

>>>os.system("pythontest.py") #上一步輸入、編輯、保存后,運(yùn)行test.py程序

2.例題

【例1-4】輸入數(shù)x,計(jì)算sin(x)的值并輸出(程序的每個(gè)語句功能由注釋可知)。

#coding=utf-8 #支持使用UTF-8編碼

#!/usr/bin/python #使用/usr/bin/python解釋器

import math #導(dǎo)入math模塊

snum=input("Input number:"); #提示并輸入x的值

x=float(snum); #轉(zhuǎn)換為一個(gè)實(shí)數(shù)并賦值給x

s=math.sin(x); #求x的正弦值,并把它賦給變量s

print("sin(%lf)=%lf\n"%(x,s)); #顯示程序運(yùn)算結(jié)果

【例1-5】從鍵盤輸入兩個(gè)整數(shù),輸出這兩個(gè)整數(shù)之積。

#coding=utf-8 #支持使用UTF-8編碼

#!/usr/bin/python #使用/usr/bin/python解釋器

import math #導(dǎo)入math模塊

snum=input("Input number x:"); #提示并輸入x的值

x=float(snum); #轉(zhuǎn)換為一個(gè)實(shí)數(shù)并賦值給x

y=float(input("Input number y:")); #提示輸入y的值

print("%lf?%lf=%lf\n"%(x,y,x?y)); #顯示程序運(yùn)算結(jié)果

1.7 習(xí)題

選擇題

1.Python語言源程序的擴(kuò)展名為( )。

A.py B.c C.cp D.cpp

2.在一行上寫多條語句時(shí),每個(gè)語句之間用( )符號(hào)分隔。

A.. B.: C.; D.&

簡答與編程題

1.程序設(shè)計(jì)語言經(jīng)過了哪幾個(gè)階段?

2.簡述Python的功能和特點(diǎn)。

3.簡述Python語言程序的組成。

4.編寫程序,運(yùn)行輸出如下信息:“How are you?”。

5.編寫程序,從鍵盤輸入3個(gè)整數(shù),輸出它們的平均值與立方和。

6.進(jìn)一步學(xué)習(xí)與實(shí)踐OS模塊的常用功能。

主站蜘蛛池模板: 尼木县| 资溪县| 浙江省| 定日县| 日土县| 丹棱县| 宜良县| 边坝县| 江津市| 安仁县| 麻城市| 桓台县| 布尔津县| 隆昌县| 松江区| 丹棱县| 肃宁县| 德庆县| 广宗县| 百色市| 新源县| 惠安县| 文化| 阳信县| 介休市| 鹤庆县| 长丰县| 罗平县| 临湘市| 吉木乃县| 湖州市| 班戈县| 寻甸| 闽侯县| 晴隆县| 麻阳| 深州市| 嘉荫县| 濉溪县| 上林县| 武胜县|