python库使用Fire库生成命令行参数
牛逼的python库-使用Fire库生成命令行参数
Python Fire是一个开源库,它可以将任何Python对象转换为命令行界面。它可以帮助开发人员快速创建命令行界面,而无需编写大量的代码。Fire的主要功能是将Python对象转换为命令行界面,这使得开发人员可以使用命令行界面来调用Python函数。
库的使用非常简单。首先,您需要安装Fire库。您可以使用pip命令来安装它:
pip install fire
安装完成后,您可以将任何Python对象转换为命令行界面。例如,您可以将一个简单的Python函数转换为命令行界面:
import fire def hello(name='world'): return f'Hello {name}!' if __name__ == '__main__': fire.Fire(hello)
在上面的示例中,我们定义了一个名为hello的函数,并使用Fire库将其转换为命令行界面。现在,您可以在终端中运行以下命令:
python hello.py --name=John
这将输出以下内容:
Hello John!
Fire库还支持将类转换为命令行界面。例如,您可以将一个简单的类转换为命令行界面:
import fire class Calculator: def add(self, x,): return x + y if __name__ == '__main__': fire.Fire(Calculator)
在上面的示例中,我们定义了一个名为Calculator的类,并使用Fire库将其转换为命令行界面。现在,您可以在终端中运行以下命令:
python calculator.py add --x=2 --y=3
这将输出以下内容:
5
总之,Fire库是一个非常有用的工具,它可以帮助开发人员快速创建命令行界面。它非常易于使用,并且可以将任何Python对象转换为命令行界面。
补充:
Python Fire:更加灵活的命令行参数
之前介绍过Python
的Fire
库,一个用来生成命令行工具的的库。
请参考:Python Fire:自动生成命令行接口
今天,针对命令行参数,补充两种更加灵活的设置方式。
1. *args 型参数
*args
型的参数可以接受任意长度的参数。
比如,模拟一个学校发送通知的功能:
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 小华
从上面使用的示例可看出,
- 可以不输入参数名称(比如第一个例子),按照顺序第一参数赋值给
school
,其余的赋值给*names
。 *names
参数支持不定长度的值school
参数指定参数名的话,可以放在任意的位置(比如上面第四个例子)。
2. **kwargs 型参数
**kwargs
型参数也是不定长度的,和*args
型参数不同的地方在于,
使用**kwargs
型参数时,需要指定参数名称。
比如,模拟一个显示学生成绩的功能:
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
参数可以不指定名称,也可以放在任意位置上。**students
参数则必须指定参数名称,但参数名称不固定,参数的个数也不固定。
3. 总结
*args
型和**kwargs
型参数可以有效的缓解命令行工具灵活性不足的问题。
开发命令行工具时,根据自己的场景,使用这两种类型的参数可让命令行工具的接口更加简洁灵活。
到此这篇关于Python Fire:更加灵活的命令行参数的文章就介绍到这了,更多相关Python Fire:更加灵活的命令行参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决Python import docx出错DLL load failed的问题
今天小编就为大家分享一篇解决Python import docx出错DLL load failed的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-02-02python matplotlib:plt.scatter() 大小和颜色参数详解
这篇文章主要介绍了python matplotlib:plt.scatter() 大小和颜色参数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-04-04
最新评论