您现在的位置是:亿华云 > IT科技类资讯
Google 开源的 Python 命令行库:初探 fire
亿华云2025-10-09 03:31:06【IT科技类资讯】9人已围观
简介一、前言在本系列前面所有文章中,我们分别介绍了 argparse、docopt 和 click 的主要功能和用法。它们各具特色,都能出色地完成命令行任务。argparse 是面向过程的,需要先设置解析
一、开源库初前言
在本系列前面所有文章中,令行我们分别介绍了 argparse、开源库初docopt 和 click 的令行主要功能和用法。它们各具特色,开源库初都能出色地完成命令行任务。令行argparse 是开源库初面向过程的,需要先设置解析器,令行再定义参数,开源库初再解析命令行,令行最后实现业务逻辑。开源库初docopt 先用声明式的令行语法定义出参数,再过程式地解析命令行和实现业务逻辑。开源库初click 则是令行用装饰器的方式进一步简化显式的命令调用逻辑,但仍然不够面向对象。开源库初
而今天要介绍的 fire则是用一种面向广义对象的方式来玩转命令行,这种对象可以是类、函数、字典、列表等,它更加灵活,也更加简单。
本系列文章默认使用 Python 3 作为解释器进行讲解。亿华云计算若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~
二、介绍
fire 可以根据任何 Python 对象自动生成命令行接口。它有如下特性:
能以简单的方式生成 CLI 是一个开发和调试 Python 代码的实用工具 能将现存代码或别人的代码转换为 CLI 使得在 Bash 和 Python 间的转换变得更容易 通过预先为 REPL 设置所需的模块和变量,使得实用 REPL 更加容易通过如下命令可快速安装 fire 库:
pip install fire三、快速开始
回忆下使用 argparse、docopt 和 click 实现命令行程序的步骤:
对于 argparse 来说,要先设置解析器,再定义参数,再解析命令行,最后实现业务逻辑(四步) 对于 docopt 来说,要先定义定义接口描述,再解析命令行,最后实现业务逻辑(三步) 对于 click 来说,就是实现业务逻辑和通过装饰器的方式定义参数(两步)它们的实现步骤越来越简单,从四步简化到了两步。而今天的主角 fire 只需一步,现业务逻辑就够了。
这简直简单的不可思议,为什么这样做就够了?我们不妨考虑下 Python 中的服务器租用函数,函数是不是可以对应一个命令行程序,而函数的参数可以对应命令行程序的参数和选项呢?再看看 Python 中的类,一个类是不是可以对应一个命令行程序,而类中的每个实例方法就可以对应子命令,实例方法中的参数就是对应子命令的参数和选项。
这么一想,理论上确实是可以实现的,我们不妨通过下面的示例来看看 fire 是如何让我们通过简单的方式实现命令行程序。
3.1 使用函数
来看这么一个例子:
import firedef hello(name="World"): return Hello { name}!.format(name=name)if __name__ == __main__: fire.Fire(hello)在上述例子中定义一个 hello 函数,它接受 name 参数,并且有默认值 "World"。使用 fire.Fire(hello) 即可非常简单快速地实现命令功能,这个命令行就接受 --name 选项,不提供时使用默认值 "World",提供时就按提供的值来。源码库
可在命令行中执行下列命令:
$ python hello.pyHello World!$ python hello.py --name=ProdesireHello Prodesire!$ python hello.py --helpINFO: Showing help with the command hello.py -- --help.NAME hello.pySYNOPSIS hello.py <flags>FLAGS --name=NAME3.2 使用类
使用函数是最简单的方式,如果我们想以更有组织的方式来实现,比如使用类,fire 也是支持的。
import fireclass Calculator(object): """A simple calculator class.""" def double(self, number): return 2 * number def triple(self, number): return 3 * numberif __name__ == __main__: fire.Fire(Calculator)在上述例子中定义一个 Calculator 类,它有两个实例方法 double 和 triple,并且都接受 number 参数,没有默认值。使用 fire.Fire(Calculator) 即可非常简单快速地实现命令功能,这个命令行支持两个子命令 double 和 triple,位置参数 NUMBER 或选项参数 --number
可在命令行中执行下列命令:
$ python calculator.py double 1020$ python calculator.py triple --number=1545$ python calculator.py double --helpINFO: Showing help with the command calculator.py double -- --help.NAME calculator.py doubleSYNOPSIS calculator.py double NUMBERPOSITIONAL ARGUMENTS NUMBERNOTES You can also use flags syntax for POSITIONAL ARGUMENTS四、小结
fire 的使用方式非常简单,定一个 Python 对象,剩下的就交给 fire 来处理,可谓是非常的 Pythonic,这也是它会如此受欢迎的原因。
除了上面展示的内容,fire 还支持更多种类的 Python 对象,也拥有很多强大的功能,我们将在接下来几节中逐步走近它。
很赞哦!(42192)
相关文章
- 只要我们做的是从目前的市场情况选择域名,从简单易记,从个性特征上,我们就可以找到一个好域名进行注册。域名注册进行域名记录和解析以及绑定网站后,客户可以通过URL登录您的网站。
- 为什么love域名抢不停?love域名有何寓意?
- 为何免费域名众说纷纭?免费域名到底如何甄别呢?
- 注册的域名会侵犯企业商标吗?选择域名如何避免侵权?
- 主流搜索引擎显示的相关搜索项越多,越能积极反映该域名的市场价值。同时,被评估域名的搜索引擎显示结果不佳可能是由于以下两个原因:
- 新手怎么在选域名上省钱呢?有什么技巧?
- 注册域名要做到哪几点?小白域名注册要注意什么?
- 如何区别好域名与坏域名?有什么细节可分清?
- 尽量不要在域名中出现特殊字符,这样的域名很容易导致访问者输入错误,同时给人留下不专业的印象,降低网站的可信度,并流失大量潜在客户。
- 新手如何注册海外域名?海外域名有什么价值?