Python 基礎(chǔ)語法_Python腳本文件結(jié)構(gòu)
目錄

目錄
前言
軟件環(huán)境
Python Script文件結(jié)構(gòu)
導(dǎo)入模塊的流程
Python的包package
最后
前言
Python基礎(chǔ)語法這一章,主要記錄了Python的文件結(jié)構(gòu)、邏輯運(yùn)算符、算術(shù)操作符、控制流語句、輸入和輸出語句、函數(shù)、對(duì)象、類等方面的內(nèi)容。在了解了Python的數(shù)據(jù)類型之后,結(jié)合之前的要點(diǎn)來一起繼續(xù)學(xué)習(xí)。
軟件環(huán)境
系統(tǒng)
UbuntuKylin 14.04
軟件
Python-2.7.6
IPython-4.0.0
Python Script文件結(jié)構(gòu)
Python Script 是應(yīng)用廣泛的一種批量自動(dòng)化處理方案,同時(shí)任何的.py擴(kuò)展文件在Python執(zhí)行程序中都可以充當(dāng)Module文件來使用,是一個(gè)于C語言中的頭文件類似的東西。從Python一切皆對(duì)象的設(shè)計(jì)理念來說,只要將.py的擴(kuò)展文件導(dǎo)入Python執(zhí)行程序中后,我們就可以使用一些Python的內(nèi)置方法。下面先從Python Script的文件結(jié)構(gòu)開始記錄。
#!/usr/bin/env python #-*- coding:utf8 -*- """Document:Python Script Description""" import os defineGlobalVairiable = True #define class class TestClass(object): """Class description """ #define function def testFunction(self,parameters): """Function description""" #main program 程序入口 if __name__ == '__main__': print 'Hello world'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1. Script文件的首行需要指定以什么可執(zhí)行程序來運(yùn)行該文件的代碼。
例如:#!/usr/bin/python 指定了路徑為/usr/bin下的Python程序來執(zhí)行。但是在有些情況下HOST的Python執(zhí)行程序不一定安裝在默認(rèn)的/usr/bin/目錄下,使用/usr/bin/env python 則指定了在env環(huán)境變量的路徑中逐一尋找Python執(zhí)行程序來執(zhí)行這個(gè)文件中的代碼,也推薦使用第二種方法。
2.在第二行需要指定PythonScript的編碼格式
下面兩種均可以指定Script的編碼格式,并沒有上面區(qū)別,個(gè)人喜的選擇。
#coding=utf8 #-*- coding:utf8 -*- #encoding:utf8 #encoding=utf8
1
2
3
4
3.接下來便是文件的Document部分
編寫程序也要注重注釋和文檔的編寫。使用”“” “”” or ”’ ”’來注釋文檔沒有區(qū)別。在導(dǎo)入Python Module后,可以使用__doc__方法來查看Document。
In [16]: import pyScriptFormat In [19]: pyScriptFormat.__doc__ Out[19]: 'Document:Python Script Description' In [21]: pyScriptFormat.testFunction.__doc__ Out[21]: 'Function description'
1
2
3
4
5
6
7
注:當(dāng)Import一個(gè)Module文件時(shí),Python執(zhí)行程序會(huì)在對(duì)其進(jìn)行一次編譯后,會(huì)生成.pyc擴(kuò)展名的字節(jié)碼文件,同時(shí)也會(huì)檢查.py文件的語法問題。所以當(dāng)Import出現(xiàn)錯(cuò)誤時(shí),可以考慮是否出現(xiàn)了語法錯(cuò)誤。
還可以使用Python內(nèi)置的dir( )方法來查看這一個(gè)Module的內(nèi)置方法和自定義的屬性、方法(以__X__命名的多為系統(tǒng)變量)。
In [22]: dir(pyScriptFormat) Out[22]: ['TestClass', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'defineGlobalVairiable', 'os', 'testFunction']
1
2
3
4
5
6
7
8
9
10
11
4.導(dǎo)入需要的模塊
使用 import moduleName 這樣的格式來導(dǎo)入一個(gè)Python的模塊,在.py文件中可以隨時(shí)隨地的使用import語句來導(dǎo)入Python的內(nèi)置函數(shù)模塊,值得注意的是,當(dāng)導(dǎo)入的模塊是自定義的Python模塊文件時(shí),需要保持與模塊文件在同一目錄路徑下。
5.定義全局變量、類、函數(shù)
在定義類和函數(shù)的時(shí)候,也可以在代碼塊的第二行中寫入類或函數(shù)的描述說明,至于定義一個(gè)類和函數(shù)的具體細(xì)節(jié),在以后的博文中會(huì)詳細(xì)的記錄。
6.程序入口 __name__
__name__方法可以調(diào)用當(dāng)前模塊的名字,當(dāng)該模塊是直接運(yùn)行而非被其他程序?qū)胝{(diào)用的時(shí)候,則該模塊的__name__ == ‘__main__’。相反,當(dāng)該模塊是其他程序?qū)氲臅r(shí)候,則該模塊的__name__ == ModuleFileName,即模塊文件本身的名字。
In [7]: import pyScriptFormat In [8]: pyScriptFormat.__name__ Out[8]: 'pyScriptFormat'
1
2
3
4
所以當(dāng)我們?nèi)粝MK的主程序僅僅是在被期望執(zhí)行的時(shí)候才會(huì)被執(zhí)行,而不會(huì)自動(dòng)執(zhí)行時(shí),可以使__name__方法來進(jìn)行控制,即作為主程序的入口:
if __name__ == '__main__':
1
這樣可以實(shí)現(xiàn)節(jié)省內(nèi)存的資源,也有利于提高代碼的重用性。
導(dǎo)入模塊的流程
Python解析器會(huì)自帶需要內(nèi)置的模塊,這些模塊文件被存放在/usr/lib/python2.7/目錄下。模塊文件在第一次導(dǎo)入時(shí),會(huì)先編譯成.pyc后綴的文件,方便下次可以無須編譯速度實(shí)現(xiàn)導(dǎo)入。
1. 在當(dāng)前目錄下尋找.pyc的模塊文件
2. 若沒有則將同名的.py文件,編譯成.pyc文件后再導(dǎo)入
3. 若連.py文件都沒有的話,會(huì)到/usr/lib/python.2.7/目錄下尋找
4. 若仍然沒有找到,就到setpy目錄下尋找
5. setpy下也沒有找到時(shí),會(huì)出發(fā)ImportError的錯(cuò)誤。
Python的包package
創(chuàng)建一個(gè)Python包:
1. 創(chuàng)建一個(gè)包目錄PackageName
2. 在package目錄下創(chuàng)建__init__.py文件,有__init__.py文件表示此目錄為包結(jié)構(gòu)
3. 在此目錄下可以存放Module、Script、.pyc、子包等結(jié)構(gòu)的文件或目錄
調(diào)用方式:
import PackageName.ModuleName PackageName.MudoleName.functionName() #逐層調(diào)用
1
2
最后
需要注意的是,在不同的使用環(huán)境下,Python文件的結(jié)構(gòu)也會(huì)不一樣,本篇是針對(duì)Python Script文件而言。但退一步來說,大道相通,希望可以做到舉一反三。同時(shí),養(yǎng)成一個(gè)良好的編程風(fēng)格是文檔處理的習(xí)慣會(huì)在以后的Teamwork中發(fā)揮很多便利的作用。
Jmilk
Python 網(wǎng)絡(luò)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。