之前介紹過Python
的Fire
庫,一個用來生成命令行工具的的庫。
請參考:Python Fire:自動生成命令行接口
今天,針對命令行參數(shù),補充兩種更加靈活的設置方式。
1. *args 型參數(shù)
*args
型的參數(shù)可以接受任意長度的參數(shù)。
比如,模擬一個學校發(fā)送通知的功能:
import fire
def notions(school, *names):
for name in names:
print(f"[{school} 通知] hello {name}")
if __name__ == "__main__":
fire.Fire(notions)
使用起來很靈活,
$ python.exe .\fire-sample.py NJ大學 小紅 小李 小張 小華
[NJ大學 通知] hello 小紅
[NJ大學 通知] hello 小李
[NJ大學 通知] hello 小張
[NJ大學 通知] hello 小華
$ python.exe .\fire-sample.py --school NJ大學 小紅 小李 小張
[NJ大學 通知] hello 小紅
[NJ大學 通知] hello 小李
[NJ大學 通知] hello 小張
$ python.exe .\fire-sample.py --school NJ大學 小紅 小李 小張 小華
[NJ大學 通知] hello 小紅
[NJ大學 通知] hello 小李
[NJ大學 通知] hello 小張
[NJ大學 通知] hello 小華
$ python.exe .\fire-sample.py 小紅 小李 --school NJ大學 小張 小華
[NJ大學 通知] hello 小紅
[NJ大學 通知] hello 小李
[NJ大學 通知] hello 小張
[NJ大學 通知] hello 小華
從上面使用的示例可看出,
- 可以不輸入?yún)?shù)名稱(比如第一個例子),按照順序第一參數(shù)賦值給
school
,其余的賦值給*names
。 -
*names
參數(shù)支持不定長度的值 -
school
參數(shù)指定參數(shù)名的話,可以放在任意的位置(比如上面第四個例子)。
2. **kwargs 型參數(shù)
**kwargs
型參數(shù)也是不定長度的,和*args
型參數(shù)不同的地方在于,
使用**kwargs
型參數(shù)時,需要指定參數(shù)名稱。
比如,模擬一個顯示學生成績的功能:
import fire
def scores(cls, **students):
for k, v in students.items():
print(f"[{cls} 成績] {k}: {v}")
if __name__ == "__main__":
fire.Fire(scores)
使用示例如下:
$ python .\fire-sample.py 初三1班 --小紅 98 --小李 89 --小王 100
[初三1班 成績] 小紅: 98
[初三1班 成績] 小李: 89
[初三1班 成績] 小王: 100
$ python .\fire-sample.py --小紅 98 --小李 89 --小王 100 初三1班
[初三1班 成績] 小紅: 98
[初三1班 成績] 小李: 89
[初三1班 成績] 小王: 100
$ python .\fire-sample.py --小紅 98 --小李 89 --小王 100 --cls 初三1班
[初三1班 成績] 小紅: 98
[初三1班 成績] 小李: 89
[初三1班 成績] 小王: 100
cls
參數(shù)可以不指定名稱,也可以放在任意位置上。**students
參數(shù)則必須指定參數(shù)名稱,但參數(shù)名稱不固定,參數(shù)的個數(shù)也不固定。文章來源:http://www.zghlxwxcb.cn/news/detail-825046.html
3. 總結(jié)
*args
型和**kwargs
型參數(shù)可以有效的緩解命令行工具靈活性不足的問題。
開發(fā)命令行工具時,根據(jù)自己的場景,使用這兩種類型的參數(shù)可讓命令行工具的接口更加簡潔靈活。文章來源地址http://www.zghlxwxcb.cn/news/detail-825046.html
到了這里,關(guān)于Python Fire:更加靈活的命令行參數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!