前言 :
你可以撰寫一個純文字檔案,建議副檔名為.py,在當中撰寫 Python 程式碼 :
* hello.py :
- print('Hello!Python!')
如果你想取得命令列引數(Command line argument),則可以使用 sys.argv,例如 :
* hello2.py :
- import sys
- print('Hello!' + sys.argv[1] + '!')
模組簡介 :
所謂模組,實際上就是個.py檔案。import語句匯入模組實際上就是載入另一個.py檔案並執行其內容。例如可先撰寫一個.py檔案 :
* some.py :
- name = 'John'
- print(name)
在 import some 時,實際上會載入some.py,之後將其編譯為位元碼形式,若有儲存檔案的權限,則通常會將位元碼儲存為.pyc檔案,位元碼是個與平台相依的指令格式,如果下次再匯入模組時,原始碼並沒有更動且.pyc存在,就會直接載入.pyc,減少了直譯的時間,從而加快了執行的速度。例如,在執行過以上的指令後,你可以發現 some.pyc 的存在. 使用 impor t匯入模組後,就會執行程式,所以上例中,你馬上看到 some.py 中 print 函式的結果. 模組其實也是個名稱空間,模組名稱就是檔案名稱,模組中宣告的變數或函式都是模組中的屬性,若要存取模組中的變數或函式等名稱,必須前置模組名稱,例如 some.title 這樣的名稱.
可以使用 from import 語句「複製」出模組中的名稱,正如上面所示範的,複製出模組中的名稱是為了方便取用名稱,但設定複製出的變數,並不會影響原本模組中的變數。如果你想要知道模組中的屬性名稱,則可以使用 dir() 函式 :
除了你自定義的屬性之外,還有一些內建的屬性,這之後有機會再深入介紹。你可以一次匯入兩個以上的名稱,例如 :
或者是將模組中的名稱全部匯入,例如 :
附帶一提的是,如果要直接載入某個 .py 檔案來執行,則可以使用 open() 開啟 .py 檔案,之後 read() 讀取檔案,再使用 exec() 來執行,注意!這並非 import,也非 imp.reload(),只是讀取整個原始碼,再整個執行過一遍。例如 :
每個 .py 檔案都是 Python 的模組,你可以將個別的功能撰寫在不同的模組中,在必要的時候以 import 語句匯入模組,就可以取用特定模組的功能,這是撰寫 Python 程式的一個中心架構!
先前談到,可以使用dir() 查詢模組中的屬性,這邊先介紹一下 __name__ (Check Modules) 屬性。如果你使用 python 指令直接執行某個 .py 檔案,則 __name__ 屬性會被設定為 '__main__' 名稱,如果是 import 語句匯入模組,則 __name__ 會被設定為模組名稱。所以,模組的作者會為了測試自己所設計的模組,而寫下這樣的程式碼 :
- some2.py :
- def doSome(text):
- return text + '...processed...'
- def main():
- fixture = 'orz'
- print(doSome(fixture))
- if __name__ == '__main__':
- main()
在入門階段,可以先知道的是,Python 會在 PYTHONPATH 環境變數所設定的路徑中,尋找 .py 或 .pyc 模組檔案,實際上,PYTHONPATH 環境變數的內容會被讀取,成為 sys.path 陣列中的字串元素,而這個字串所代表的路徑,正是模組檔案尋找的根據 :
沒有留言:
張貼留言