Python 將模組作為指令碼來執行
阿新 • • 發佈:2019-01-25
簡述
在 Python 中,模組的使用方式有很多種,可以在 Python shell 中使用,也可以將其用於另外一個模組中。雖然形式不同,但本質沒什麼區別,均屬於匯入。
除匯入之外,還可以將模組作為一個獨立的指令碼來執行。
|
將模組作為指令碼來執行
當使用下述方式執行 Python 模組時:
python script.py
模組中的程式碼將被執行,就像匯入它一樣,但 __name__
將被設定為 __main__
。
例如,有一個模組 calc.py
,裡面定義了一個 add()
函式。如果要測試這個函式,可以這樣編寫:
def add(a, b):
return a + b
if __name__ == '__main__':
print('test: 2 + 3 =', add(2, 3))
然後,就可以將其作為一個指令碼來執行:
$ python calc.py
test: 2 + 3 = 5
注意: 程式碼中的 if
語句很有必要,這樣既可以將模組作為獨立的指令碼執行,又可以將其作為可匯入的模組來使用,請參考:Python 中 name == ‘main’ 的作用
命令列引數
倘若引數是可變的,該怎麼辦?
很簡單,命令列傳參 - 這是對上述形式的一個擴充套件:
python script.py <arguments>
這時,要解析傳遞的引數,需要用到 sys
模組:
def add(a, b):
return a + b
if __name__ == '__main__':
import sys
args = sys.argv # 用於獲取命令列引數
print(args)
print(add(int(args[1]), int(args[2])))
沒錯,通過 sys.argv
可以獲取命令列引數,它是一個 list 型別。sys.argv[0]
表示程式碼本身檔案路徑,引數索引從 1 開始。
使用很簡單,引數之間以空格隔開:
$ python calc.py 2 3
['calc.py', '2', '3']
5
$ python calc.py 4 5
['calc.py', '4', '5']
9
這樣,就可以傳遞任意的引數了。