从入门到精通:玩转Python Fire库

 更新时间:2024年02月07日 08:42:36   作者:wang_yb  
想快速打造属于你的Python GUI应用吗?抛开复杂的代码,用Python Fire库就能轻松实现!本指南将引领你从零起步,驾驭Python Fire的强大功能,让编程既简单又高效,准备好了吗?让我们开始玩转Python Fire,开启你的编程冒险吧!

之前介绍过PythonFire库,一个用来生成命令行工具的的库。
请参考: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库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 创建虚拟环境打包py文件的实现步骤

    创建虚拟环境打包py文件的实现步骤

    使用虚拟环境,可以为每个项目创建一个独立的Python环境,每个环境都有自己的库和版本,从而避免了依赖冲突,本文主要介绍了创建虚拟环境打包py文件的实现步骤,感兴趣的可以了解一下
    2024-04-04
  • python在指定位置插入字符的实现

    python在指定位置插入字符的实现

    本文主要介绍了python在指定位置插入字符的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • python操作kafka实践的示例代码

    python操作kafka实践的示例代码

    这篇文章主要介绍了python操作kafka实践的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 用Python写冒泡排序代码

    用Python写冒泡排序代码

    本文给大家分享一段代码使用python写一个冒泡排序小程序,代码非常简单,感兴趣的朋友参考下吧
    2016-04-04
  • django 通过URL访问上传的文件方法

    django 通过URL访问上传的文件方法

    今天小编就为大家分享一篇django 通过URL访问上传的文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python 线程池模块之多线程操作代码

    Python 线程池模块之多线程操作代码

    最近在做一个爬虫相关的项目,单线程的整站爬虫,耗时真的不是一般的巨大,运行一次也是心累,所以,要想实现整站爬虫,多线程是不可避免的,那么python多线程又应该怎样实现呢?今天小编给大家分享下实现代码,感兴趣的朋友一起看看吧
    2021-05-05
  • python方差检验的含义及用法

    python方差检验的含义及用法

    在本篇内容里小编给大家整理的是一篇关于python方差检验的含义及用法,有需要的朋友们可以跟着学习参考下。
    2021-07-07
  • Python爬虫+tkinter界面实现历史天气查询的思路详解

    Python爬虫+tkinter界面实现历史天气查询的思路详解

    这篇文章主要介绍了Python爬虫+tkinter界面实现历史天气查询的思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • python/sympy求解矩阵方程的方法

    python/sympy求解矩阵方程的方法

    今天小编就为大家分享一篇python/sympy求解矩阵方程的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python常用时间库time、datetime与时间格式之间的转换教程

    python常用时间库time、datetime与时间格式之间的转换教程

    Python项目中很多时候会需要将时间在Datetime格式和TimeStamp格式之间转化,下面这篇文章主要给大家介绍了关于python常用时间库time、datetime与时间格式之间转换的相关资料,需要的朋友可以参考下
    2023-02-02

最新评论