Python命令行參數(shù)定義及需要注意的地方
在命令行中運(yùn)行python代碼是很常見的,下面介紹如何定義命令后面跟的參數(shù)。
1 常規(guī)用法
Python代碼中主要使用下面幾行代碼來定義并獲取需要在命令行中賦值的參數(shù):
import argparse parser = argparse.ArgumentParser("Description.") # ————1———— parser.add_argument('--test1', type=str, default="1", help="Test1 help.") # ————2———— parser.add_argument('--test2', type=float, default=2.1, help="Test2 help.") # ————2———— args = parser.parse_args() # ————3———— print(args) test1, test2 = args.test1, args.test2 # ————4———— print(type(test1), test1, test1 + " add test") print(type(test2), test2, test2 + 100)
注釋:
1、獲取外部參數(shù)對象實(shí)例??梢詡魅胱址畞砻枋隹傮w的外部參數(shù)。
2、定義外部參數(shù),可以多次調(diào)用來定義多個(gè)外部參數(shù)。函數(shù)的第一個(gè)參數(shù)是外部參數(shù)的名稱,建議以兩個(gè)減號開頭,中間不要使用數(shù)字字母下劃線以外的符號,否則容易出錯(cuò)。type是你希望外部參數(shù)傳入后轉(zhuǎn)換的類型,比如--test1定義為str,即使命令行傳參不添加引號,函數(shù)也將它轉(zhuǎn)換為字符串(當(dāng)然不加引號傳字符串就不能用空格了)。而--test2是float,即使命令行傳參帶了引號,只要能轉(zhuǎn)換為數(shù)字,函數(shù)都能轉(zhuǎn)換為float類型。default是外部參數(shù)的默認(rèn)值。如果命令行不對外部參數(shù)賦值而使用默認(rèn)值,函數(shù)不會對你定義的默認(rèn)值進(jìn)行type上的轉(zhuǎn)換,所以default最好直接定義為type指定的類型(比如--test1的default定義為"1"而不是1)。help傳入對當(dāng)前外部參數(shù)的描述,命令行中使用--help輸出的就是這個(gè)。
3、分析獲取的外部參數(shù)。傳出的是一個(gè)命名空間,類似于字典,但使用屬性的方式而不是key索引來獲取命名對應(yīng)的外部參數(shù)值。
4、以獲取屬性的方式獲取外部參數(shù)。
需要注意的是,外部參數(shù)的定義必須寫在獲取外部參數(shù)之前。也就是說,parser.add_argument()要寫在parser.parse_args()之前,否則外部參數(shù)無法被命令行捕獲。另外,如果代碼中沒有parser.parse_args(),命令行就不能傳參。
用命令行執(zhí)行以上代碼,命令與輸出如下(以上代碼保存為test.py):
可以看出,故意以數(shù)字和字符串的方式分別對字符串和float類型的外部參數(shù)賦值,函數(shù)都能正確地轉(zhuǎn)換并正確地參與運(yùn)算。
使用默認(rèn)值時(shí)輸出如下:
2 注意事項(xiàng)
通過以上的實(shí)驗(yàn),argparse庫似乎能將外部參數(shù)正確轉(zhuǎn)換為各種類型,只要能轉(zhuǎn)換。下面來實(shí)驗(yàn)是否能傳入一個(gè)numpy數(shù)組。代碼如下:
import numpy as np import argparse parser = argparse.ArgumentParser() parser.add_argument('--array', type=np.array, default=np.array([1,2])) args = parser.parse_args() print(args) array = args.array print(type(array)) print(array) print(array + 1)
當(dāng)使用默認(rèn)值時(shí):
運(yùn)行正確,但當(dāng)我們意圖傳入外部參數(shù)時(shí):
盡管傳入的[1,2]被轉(zhuǎn)換為numpy.ndarray類型,它卻并不能參與運(yùn)算。所以,并不是所有的類型都能在命令行中傳入的。
以上就是Python命令行參數(shù)定義及需要注意的地方的詳細(xì)內(nèi)容,更多關(guān)于Python命令行參數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python+matplotlib實(shí)現(xiàn)鼠標(biāo)移動三角形高亮及索引顯示
這篇文章主要介紹了Python+matplotlib實(shí)現(xiàn)鼠標(biāo)移動三角形高亮及索引顯示,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python Pickle 實(shí)現(xiàn)在同一個(gè)文件中序列化多個(gè)對象
今天小編就為大家分享一篇Python Pickle 實(shí)現(xiàn)在同一個(gè)文件中序列化多個(gè)對象,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12python mysql項(xiàng)目實(shí)戰(zhàn)及框架搭建過程
本文給大家分享python mysql項(xiàng)目實(shí)戰(zhàn)框架搭建過程,通過實(shí)例代碼給大家講解python mysql項(xiàng)目實(shí)戰(zhàn)的相關(guān)知識,需要的朋友參考下吧2021-06-06Python自動修改電腦靜態(tài)IP地址的實(shí)現(xiàn)示例
通過Python自動修改電腦的靜態(tài)IP地址可以極大地提高我們的工作效率,減少手動修改IP地址帶來的錯(cuò)誤,本文就來介紹一下Python自動修改電腦靜態(tài)IP地址的實(shí)現(xiàn)示例,感興趣的可以了解一下2023-11-11python3 numpy中數(shù)組相乘np.dot(a,b)運(yùn)算的規(guī)則說明
這篇文章主要介紹了python3 numpy中數(shù)組相乘np.dot(a,b)運(yùn)算的規(guī)則說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03