如何高效运用Python Fire库进行代码参数化?

2026-05-21 20:451阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计709个文字,预计阅读时间需要3分钟。

如何高效运用Python Fire库进行代码参数化?

一. 介绍

fire 是 Python 中用于生成命令行界面(Command Line Interfaces,CLIs)的工具。无需额外工作,只需从主模块中调用 fire.Fire(),它将自动将你的代码转换为 CLI。fire() 的参数可以指定如何解析命令行选项。

一. 介绍

fire是python中用于生成命令行界面(Command Line Interfaces, CLIs)的工具,不需要做任何额外的工作,只需要从主模块中调用fire.Fire(),它会自动将你的代码转化为CLI,Fire()的参数可以说任何的python对象

二. 安装

pip install fire

三. 用法

实例1 单个函数:python 模块名 参数1 参数2

在Common目录下新建一个test_fire.py的模块

import fire

def add(a, b):
count = a + b
return count

if __name__ == '__main__':
fire.Fire(add)

当不接参数时,执行python test_fire.py会显示帮助信息

帮助信息里显示了fire.Fire()的参数类型(function)、文件路径、文档字符串、参数用法等信息

如何高效运用Python Fire库进行代码参数化?

加参数运行的结果如下:

注意:两种方法调用,一种是直接跟实参,一种是--形参 实参的形式,为了方便,本文采取第一种

实例2 多个函数:python 模块名 函数名 参数

import fire

def add(a, b):
count = a + b
return count

def sub(a, b):
result = a - b
return result

if __name__ == '__main__':
fire.Fire()

加上参数运行结果:

实例3 类(对象) 多个函数:python 模块名 函数名 参数

import fire

class Calculator(object):
def add(self, a, b):
count = a + b
return count

def sub(self, a, b):
result = a - b
return result

if __name__ == '__main__':
fire.Fire(Calculator) #这里用类名Calculator或者类的实例化对象Calculator()结果都是一样的

加参数运行结果:

注意:

1. fire 默认使用​​-​​​作为参数分隔符,所以如果你要在命令行传入类似​​2017-04-22​​​的参数时,那么程序接收到的参数就肯定不是​​2017-04-22​​​了,需要使用​​--separator​​来改变分隔符

​​2. fire​​​会自动区分你在命令行传入的参数的类型,例如​​20170422​​​会自动识别成​​int​​​,​​hello​​​会自动识别成​​str​​​,​​'(1,2)'​​​会自动识别成​​tuple​​​,​​'{"name": "Alan Lee"}'​​​会自动识别成​​dict​​​。但是你如果想要传入一个字符串类型的​​20170422​​​怎么办?那就需要这样写:​​'"20170422"'​​​或者​​"'20170422'"​​​或者​​\"20170422\"​​,总之呢,就是加一个转义,因为命令行默认会吃掉你的引号

参考文章

​​mp.weixin.qq.com/s/lMOieL_RFRHsh5OW4G4axg​​


本文共计709个文字,预计阅读时间需要3分钟。

如何高效运用Python Fire库进行代码参数化?

一. 介绍

fire 是 Python 中用于生成命令行界面(Command Line Interfaces,CLIs)的工具。无需额外工作,只需从主模块中调用 fire.Fire(),它将自动将你的代码转换为 CLI。fire() 的参数可以指定如何解析命令行选项。

一. 介绍

fire是python中用于生成命令行界面(Command Line Interfaces, CLIs)的工具,不需要做任何额外的工作,只需要从主模块中调用fire.Fire(),它会自动将你的代码转化为CLI,Fire()的参数可以说任何的python对象

二. 安装

pip install fire

三. 用法

实例1 单个函数:python 模块名 参数1 参数2

在Common目录下新建一个test_fire.py的模块

import fire

def add(a, b):
count = a + b
return count

if __name__ == '__main__':
fire.Fire(add)

当不接参数时,执行python test_fire.py会显示帮助信息

帮助信息里显示了fire.Fire()的参数类型(function)、文件路径、文档字符串、参数用法等信息

如何高效运用Python Fire库进行代码参数化?

加参数运行的结果如下:

注意:两种方法调用,一种是直接跟实参,一种是--形参 实参的形式,为了方便,本文采取第一种

实例2 多个函数:python 模块名 函数名 参数

import fire

def add(a, b):
count = a + b
return count

def sub(a, b):
result = a - b
return result

if __name__ == '__main__':
fire.Fire()

加上参数运行结果:

实例3 类(对象) 多个函数:python 模块名 函数名 参数

import fire

class Calculator(object):
def add(self, a, b):
count = a + b
return count

def sub(self, a, b):
result = a - b
return result

if __name__ == '__main__':
fire.Fire(Calculator) #这里用类名Calculator或者类的实例化对象Calculator()结果都是一样的

加参数运行结果:

注意:

1. fire 默认使用​​-​​​作为参数分隔符,所以如果你要在命令行传入类似​​2017-04-22​​​的参数时,那么程序接收到的参数就肯定不是​​2017-04-22​​​了,需要使用​​--separator​​来改变分隔符

​​2. fire​​​会自动区分你在命令行传入的参数的类型,例如​​20170422​​​会自动识别成​​int​​​,​​hello​​​会自动识别成​​str​​​,​​'(1,2)'​​​会自动识别成​​tuple​​​,​​'{"name": "Alan Lee"}'​​​会自动识别成​​dict​​​。但是你如果想要传入一个字符串类型的​​20170422​​​怎么办?那就需要这样写:​​'"20170422"'​​​或者​​"'20170422'"​​​或者​​\"20170422\"​​,总之呢,就是加一个转义,因为命令行默认会吃掉你的引号

参考文章

​​mp.weixin.qq.com/s/lMOieL_RFRHsh5OW4G4axg​​