Python 中的 fire
库
fire
是由 Google 开发的一个轻量级 Python 库,用于快速将 Python 脚本/类/函数/对象转换成命令行接口(CLI)工具。
只需一行代码即可为任何 Python 对象创建 CLI,大大减少了你手动使用 argparse
等库解析参数的工作量。
1. 安装 fire
pip install fire
2. 基本用法:函数转命令行工具
定义函数并运行
import fire
def greet(name="World"):
return f"Hello, {
name}!"
if __name__ == "__main__":
fire.Fire(greet)
运行脚本
python script.py Alice
输出:
Hello, Alice!
3. 多个参数的函数
def add(a, b):
return int(a) + int(b)
fire.Fire(add)
python script.py 3 5
# 输出: 8
4. 使用类作为命令入口
class Calculator:
def add(self, a, b):
return int(a) + int(b)
def sub(self, a, b):
return int(a) - int(b)
if __name__ == "__main__":
fire.Fire(Calculator)
python script.py add 3 5 # 输出: 8
python script.py sub 10 4 # 输出: 6
5. 使用模块、字典、对象
def say(name):
return f"Hi {
name}"
tools = {
'say': say,
'add': lambda x, y: int(x) + int(y)
}
fire.Fire(tools)
python script.py say Alice
python script.py add 1 2
6. 自动帮助信息
运行任意 fire
脚本时加上 --help
或输入错误参数时,会自动生成 CLI 帮助信息:
python script.py --help
7. 嵌套命令结构支持
支持嵌套调用,例如:
class Tools:
def hello(self):
return "hello"
class Math:
def add(self, x, y):
return int(x) + int(y)
fire.Fire(Tools)
python script.py Math add 2 3
# 输出: 5
8. 返回值自动输出
- 返回
str
/int
等基础类型:直接输出。 - 返回
dict
、list
:自动格式化为 JSON。 - 返回
None
:无输出。
9. 适合用来干什么?
场景 | 说明 |
---|---|
快速搭建命令行工具 | 将函数/类转成 CLI 接口 |
Python 脚本工具封装 | 将常用工具方法暴露出来 |
自动测试函数 | 通过命令行输入调用参数测试函数 |
调用训练脚本、预处理脚本 | 替代 argparse 使用 |
10. fire
vs argparse
vs click
特性 | fire |
argparse |
click |
---|---|---|---|
配置复杂度 | 极低 | 中 | 低 |
编写速度 | 快(1 行搞定) | 慢(需定义 parser) | 中 |
自动帮助 | 是 | 是 | 是 |
多层命令结构 | 支持 | 支持 | 支持 |
推荐场景 | 原型开发 / 工具脚本 | 大型 CLI 工具 | Web 框架类工具 |
11. 小结
功能 | 用法 |
---|---|
快速命令行接口 | fire.Fire(func_or_class) |
支持函数/类 | 任意 Python 函数、类、对象 |
自动解析参数 | 位置参数、关键字参数自动映射 |
支持嵌套结构 | 类中嵌套类/方法 |
自动生成帮助 | --help |
多种输入对象 | 函数、类、字典、模块、实例 |
12. 示例项目结构
mycli.py
import fire
def hello(name="world"):
return f"Hello, {
name}"
if __name__ == "__main__":
fire.Fire(hello)
python mycli.py Alice
fire
是 Python 中最简洁的命令行接口生成工具之一,非常适合快速构建开发工具、实验脚本、数据处理流程等命令行程序。只需专注于写逻辑,CLI 交互由它自动搞定。