從入門(mén)到精通:玩轉(zhuǎn)Python?Fire庫(kù)
之前介紹過(guò)Python的Fire庫(kù),一個(gè)用來(lái)生成命令行工具的的庫(kù)。
請(qǐng)參考:Python Fire:自動(dòng)生成命令行接口
今天,針對(duì)命令行參數(shù),補(bǔ)充兩種更加靈活的設(shè)置方式。
1. *args 型參數(shù)
*args型的參數(shù)可以接受任意長(zhǎng)度的參數(shù)。
比如,模擬一個(gè)學(xué)校發(fā)送通知的功能:
import fire
def notions(school, *names):
for name in names:
print(f"[{school} 通知] hello {name}")
if __name__ == "__main__":
fire.Fire(notions)
使用起來(lái)很靈活,
$ python.exe .\fire-sample.py NJ大學(xué) 小紅 小李 小張 小華 [NJ大學(xué) 通知] hello 小紅 [NJ大學(xué) 通知] hello 小李 [NJ大學(xué) 通知] hello 小張 [NJ大學(xué) 通知] hello 小華 $ python.exe .\fire-sample.py --school NJ大學(xué) 小紅 小李 小張 [NJ大學(xué) 通知] hello 小紅 [NJ大學(xué) 通知] hello 小李 [NJ大學(xué) 通知] hello 小張 $ python.exe .\fire-sample.py --school NJ大學(xué) 小紅 小李 小張 小華 [NJ大學(xué) 通知] hello 小紅 [NJ大學(xué) 通知] hello 小李 [NJ大學(xué) 通知] hello 小張 [NJ大學(xué) 通知] hello 小華 $ python.exe .\fire-sample.py 小紅 小李 --school NJ大學(xué) 小張 小華 [NJ大學(xué) 通知] hello 小紅 [NJ大學(xué) 通知] hello 小李 [NJ大學(xué) 通知] hello 小張 [NJ大學(xué) 通知] hello 小華
從上面使用的示例可看出,
- 可以不輸入?yún)?shù)名稱(chēng)(比如第一個(gè)例子),按照順序第一參數(shù)賦值給
school,其余的賦值給*names。 *names參數(shù)支持不定長(zhǎng)度的值school參數(shù)指定參數(shù)名的話(huà),可以放在任意的位置(比如上面第四個(gè)例子)。
2. **kwargs 型參數(shù)
**kwargs 型參數(shù)也是不定長(zhǎng)度的,和*args型參數(shù)不同的地方在于,
使用**kwargs型參數(shù)時(shí),需要指定參數(shù)名稱(chēng)。
比如,模擬一個(gè)顯示學(xué)生成績(jī)的功能:
import fire
def scores(cls, **students):
for k, v in students.items():
print(f"[{cls} 成績(jī)] {k}: {v}")
if __name__ == "__main__":
fire.Fire(scores)
使用示例如下:
$ python .\fire-sample.py 初三1班 --小紅 98 --小李 89 --小王 100 [初三1班 成績(jī)] 小紅: 98 [初三1班 成績(jī)] 小李: 89 [初三1班 成績(jī)] 小王: 100 $ python .\fire-sample.py --小紅 98 --小李 89 --小王 100 初三1班 [初三1班 成績(jī)] 小紅: 98 [初三1班 成績(jī)] 小李: 89 [初三1班 成績(jī)] 小王: 100 $ python .\fire-sample.py --小紅 98 --小李 89 --小王 100 --cls 初三1班 [初三1班 成績(jī)] 小紅: 98 [初三1班 成績(jī)] 小李: 89 [初三1班 成績(jī)] 小王: 100
cls參數(shù)可以不指定名稱(chēng),也可以放在任意位置上。**students參數(shù)則必須指定參數(shù)名稱(chēng),但參數(shù)名稱(chēng)不固定,參數(shù)的個(gè)數(shù)也不固定。
3. 總結(jié)
*args型和**kwargs型參數(shù)可以有效的緩解命令行工具靈活性不足的問(wèn)題。
開(kāi)發(fā)命令行工具時(shí),根據(jù)自己的場(chǎng)景,使用這兩種類(lèi)型的參數(shù)可讓命令行工具的接口更加簡(jiǎn)潔靈活。
到此這篇關(guān)于從入門(mén)到精通:玩轉(zhuǎn)Python Fire庫(kù)的文章就介紹到這了,更多相關(guān)Python Fire庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
跟老齊學(xué)Python之?dāng)?shù)據(jù)類(lèi)型總結(jié)
前面已經(jīng)洋洋灑灑地介紹了不少數(shù)據(jù)類(lèi)型。不能再不顧一切地向前沖了,應(yīng)當(dāng)總結(jié)一下。這樣讓看官能夠從總體上對(duì)這些數(shù)據(jù)類(lèi)型有所了解,如果能夠有一覽眾山小的感覺(jué),就太好了。2014-09-09
python中不同數(shù)據(jù)對(duì)象的空值校驗(yàn)總結(jié)
在Python中,我們可以使用不同的方式來(lái)校驗(yàn)數(shù)值的空值、字符串的空值以及對(duì)象的空值,本文為大家整理了一些常見(jiàn)的方法,希望對(duì)大家有所幫助2024-01-01
Python字典dict常用方法函數(shù)實(shí)例
這篇文章主要介紹了Python字典dict常用方法函數(shù)實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
python Flask實(shí)現(xiàn)restful api service
本篇文章主要介紹了python Flask實(shí)現(xiàn)restful api service,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
Python使用markconv實(shí)現(xiàn)將Markdown轉(zhuǎn)換為HTML
將Markdown轉(zhuǎn)換為HTML是markconv最核心的功能之一,也是markconv開(kāi)發(fā)的第一個(gè)功能,現(xiàn)在讓我們深入探討如何使用markconv將Markdown文檔轉(zhuǎn)換為HTML格式吧2026-03-03
python中isdigit() isalpha()用于判斷字符串的類(lèi)型問(wèn)題
這篇文章主要介紹了python中isdigit() isalpha()用于判斷字符串的類(lèi)型問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
python使用append合并兩個(gè)數(shù)組的方法
這篇文章主要介紹了python使用append合并兩個(gè)數(shù)組的方法,涉及Python中append方法的使用技巧,需要的朋友可以參考下2015-04-04
詳解python實(shí)現(xiàn)讀取郵件數(shù)據(jù)并下載附件的實(shí)例
這篇文章主要介紹了詳解python讀取郵件數(shù)據(jù)并下載附件的實(shí)例的相關(guān)資料,這里提供實(shí)現(xiàn)實(shí)例,幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08

