- Python語言實(shí)用教程
- 錢雪忠 宋威 錢恒編著
- 12744字
- 2019-08-02 17:04:24
第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.0到Python3.6的簡要發(fā)展情況
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)。
圖1-1 開始安裝Python 3.6.0
圖1-2 安裝進(jìn)行中
安裝完成后開始菜單中有Python 3.6程序組,如圖1-4所示。
圖1-3 已成功安裝Python 3.6.0
圖1-4 Python 3.6程序組
選擇“IDLE(Python 3.6 32-bit)”菜單命令,啟動(dòng)IDLE(自帶Python GUI)運(yùn)行界面,
如圖1-5所示。
圖1-5 IDLE(Python 3.6 32-bit)運(yùn)行界面
選擇“Python 3.6(32-bit)”菜單命令,啟動(dòng)如圖1-6所示Python命令窗口。
圖1-6 Python 3.6命令窗口
選擇“Python 3.6 Manuals(32-bit)”菜單命令,啟動(dòng)如圖1-7所示Python 3.6.0幫助文檔。
圖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)下的情況類似,這里不再贅述。
圖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)行情況。
圖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所示。
圖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”按鈕。
圖1-11 PyCharm安裝歡迎界面
圖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”按鈕。
圖1-13 PyCharm安裝菜單文件夾
圖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。
圖1-15 PyCharm安裝進(jìn)程中
圖1-16 PyCharm安裝完成頁面
7)PyCharm運(yùn)行效果如圖1-17所示,在這里可以進(jìn)行新建Python源程序文件,輸入源程序并調(diào)試運(yùn)行等一系列操作。
圖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ì)話框。
圖1-18 選擇Install New Software菜單項(xiàng)
2)單擊“Add”按鈕,彈出“Add Site”對(duì)話框,在“Location”文本框中添加PyDev的安裝地址(框中會(huì)默認(rèn)顯示),如圖1-19所示。
圖1-19 指定PyDev的安裝網(wǎng)址
3)完成后單擊“Add Site”對(duì)話框中的“OK”按鈕,接著單擊PyDev的“+”,展開PyDev的節(jié)點(diǎn),選擇相應(yīng)的軟件包選項(xiàng),然后單擊“Next”按鈕進(jìn)行安裝,如圖1-20所示。
圖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所示。
圖1-21 PyDev安裝后的設(shè)置
2)此時(shí)會(huì)彈出“Select interpreter”對(duì)話框,在其中設(shè)置Python的安裝位置,如圖1-22所示。
圖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”按鈕。
圖1-23 選擇PyDev項(xiàng)目類型
2)此時(shí)會(huì)彈出一個(gè)新窗口,填寫Project Name以及項(xiàng)目保存地址,如圖1-24所示,單擊“Next”按鈕完成項(xiàng)目的創(chuàng)建。
圖1-24 指定PyDev項(xiàng)目名稱與保存目錄等
5.創(chuàng)建新的PyDev Module
僅有項(xiàng)目是無法執(zhí)行的,必須創(chuàng)建新的PyDev Module。
1)選擇File→New→PyDev Module菜單命令,如圖1-25所示。
圖1-25 選擇創(chuàng)建新的PyDev Module
2)在彈出的窗口中選擇文件存放位置以及Module Name,注意在“Name”文本框中不用加“.py”,系統(tǒng)會(huì)自動(dòng)添加。然后單擊“Finish”按鈕完成創(chuàng)建,如圖1-26所示。
圖1-26 指定要?jiǎng)?chuàng)建的PyDev Module名等
輸入如圖1-27所示的代碼。
6.執(zhí)行程序
程序?qū)懲旰缶涂梢蚤_始執(zhí)行程序,在上方的工具欄單擊“執(zhí)行”按鈕 (內(nèi)含白色小三角形的綠色圓圈的工具按鈕)。之后會(huì)彈出一個(gè)選擇執(zhí)行方式的窗口,通常會(huì)選擇Python Run,開始執(zhí)行程序。
當(dāng)然還有非常多的Python IDE,更多Python IDE請(qǐng)查閱wiki網(wǎng)站等。
圖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所示。
圖1-28 Python包結(jié)構(gòu)示意圖
圖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)境。
圖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è)文件)。
執(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)義符
表1-3 字符串文本中的轉(zhuǎn)義符
下面是輸出若干轉(zhuǎn)義符的示例:
print(′\123′) #S,大寫字母S
print(′\x02′) #,ASCII 2對(duì)應(yīng)的控制符
print("\N{SOLIDUS}") #/,斜杠符/
print("\N{BLACK SPADE SUIT}") #?,黑桃符
print(′\u3333′) # ,某中日韓字符集兼容中的字符
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í)行。如下所示:
以下代碼在執(zhí)行時(shí)將會(huì)產(chǎn)生錯(cuò)誤:
因此,在Python的代碼塊中必須使用相同數(shù)目的行首縮進(jìn)空格數(shù)才行。
5.多行語句
Python語句中一般以新行(換行符)作為語句的結(jié)束符。
但是用戶可以使用反斜杠(\)將一行的語句分為多行顯示,如下所示:
total=item_one+\
item_two+\
item_three
語句中包含[],{}或()括號(hào)就不需要使用多行連接符(自動(dòng)判斷是多行的)。如:
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模塊的常用功能。
- C程序設(shè)計(jì)簡明教程(第二版)
- Web Scraping with Python
- Twilio Best Practices
- JavaFX Essentials
- Scratch 3游戲與人工智能編程完全自學(xué)教程
- Internet of Things with the Arduino Yún
- 重學(xué)Java設(shè)計(jì)模式
- Mastering JavaScript High Performance
- Android移動(dòng)開發(fā)案例教程:基于Android Studio開發(fā)環(huán)境
- Instant Debian:Build a Web Server
- Windows Phone 8 Game Development
- Mastering JavaScript
- Java EE 8 and Angular
- Node.js 6.x Blueprints
- Parallel Programming with Python