📜  Python火模块

📅  最后修改于: 2022-05-13 01:55:44.074000             🧑  作者: Mango

Python火模块

Python Fire是一个用于创建 CLI 应用程序的库。它可以从Python中的任何对象自动生成命令行接口。它不仅限于此,它是用于调试和开发目的的好工具。在 Fire 的帮助下,您可以将现有代码转换为 CLI。在本文中,我们将看到火的使用。

安装

首先,您可以根据自己的选择执行不同的安装方法。

使用 pip 安装:

pip install fire

Fire适用于任何Python对象,包括组件、字典、列表、元组等。

在函数上调用火

这是一个在函数上调用 fire 的示例,我们将创建一个函数并在 CLI 中调用该函数。

Python3
import fire
  
def greeting(name):
    return "Hello " + name
  
fire.Fire(greeting("World!"))


Python3
import fire
  
def hello(name):
    return "Hello " + name
  
if __name__ == '__main__':
    fire.Fire(hello)


Python3
import fire
  
class Square(object):
  
    def square(self, number):
        return number*number
  
fire.Fire(Square)


Python3
import fire
  
class Calculator(object):
    def __init__(self):
        self.SQUARE = Square()
  
class Square(object):
  
    def square(self, number):
        return number*number
        
    def triplet(self,number):
        return number*number*number
  
fire.Fire(Calculator)


输出:

Hello World!

然后,从终端,您可以使用以下命令运行:

python main.py

将函数设置为入口点

还有另一种方法来运行这个程序,方法是在调用时在 Fire函数中设置一个函数。通过这样做,我们只需要在运行时传递参数而不告诉调用哪个方法。

Python3

import fire
  
def hello(name):
    return "Hello " + name
  
if __name__ == '__main__':
    fire.Fire(hello)

输出:

Hello world

如果您使用以下命令在终端中运行它,它将给出与上述函数相同的结果。呼唤火消耗名称=“世界”。使用这种调用 fire 的方法,可以避免用参数编写函数名称。

python main.py world

两种调用方式都会给出“Hello World”作为输出。

在类上调用函数

这是一个创建名为 Square 的示例类,其中定义了一个方法“square”。有一次,我们在任何类上调用 fire,我们可以直接在命令行上将其作为方法访问。我们将看到如何使用以下示例调用此方法,

Python3

import fire
  
class Square(object):
  
    def square(self, number):
        return number*number
  
fire.Fire(Square)

输出:

4

这个类有两种执行方式,第一种方法是:

python main.py square 2

提供相同所需输出的第二种方法是:

python main.py square --number=2

两种方法都会给出相同的结果 = 4。

将参数传递给命令

Fire 很方便,因为它允许从命令行传递参数。在上面的示例中,我们从命令行调用该方法并同时分配了参数。

使用分层命令

Fire 可用于在类内部实例化类,创建分层视图。举个例子,

Python3

import fire
  
class Calculator(object):
    def __init__(self):
        self.SQUARE = Square()
  
class Square(object):
  
    def square(self, number):
        return number*number
        
    def triplet(self,number):
        return number*number*number
  
fire.Fire(Calculator)

这样,Calculator 类实例化了square类并创建了它的对象。实例化类的成员函数可以在运行时访问,例如:

火旗

要了解有关与特定对象或类关联的触发命令的更多信息,请在对象或类中使用 –help 标志。例如,如下所示,我们正在查询“SQUARE”对象,它显示了与之关联的两个命令——“square”和“triplet”。这意味着您只能将这两个命令与 SQUARE 及其参数一起传递。

为什么要火?

  • Fire 使代码更具可读性。
  • 易于创建命令行界面。
  • fire.Fire() 在程序结束时调用时执行程序的全部内容。