溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么使用Python命令行庫fire

發(fā)布時間:2021-11-19 14:56:53 來源:億速云 閱讀:248 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“怎么使用Python命令行庫fire”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么使用Python命令行庫fire”吧!

一、前言

今天要介紹的 fire則是用一種面向廣義對象的方式來玩轉(zhuǎn)命令行,這種對象可以是類、函數(shù)、字典、列表等,它更加靈活,也更加簡單。

本系列文章默認(rèn)使用 Python 3 作為解釋器進(jìn)行講解。若你仍在使用 Python 2,請注意兩者之間語法和庫的使用差異哦~

二、介紹

fire 可以根據(jù)任何 Python 對象自動生成命令行接口。它有如下特性:

  • 能以簡單的方式生成 CLI

  • 是一個開發(fā)和調(diào)試 Python 代碼的實(shí)用工具

  • 能將現(xiàn)存代碼或別人的代碼轉(zhuǎn)換為 CLI

  • 使得在 Bash 和 Python 間的轉(zhuǎn)換變得更容易

  • 通過預(yù)先為 REPL 設(shè)置所需的模塊和變量,使得實(shí)用 REPL 更加容易

通過如下命令可快速安裝 fire 庫:

pip install fire

三、快速開始

回憶下使用 argparse、docopt 和 click 實(shí)現(xiàn)命令行程序的步驟:

  • 對于 argparse 來說,要先設(shè)置解析器,再定義參數(shù),再解析命令行,最后實(shí)現(xiàn)業(yè)務(wù)邏輯(四步)

  • 對于 docopt 來說,要先定義定義接口描述,再解析命令行,最后實(shí)現(xiàn)業(yè)務(wù)邏輯(三步)

  • 對于 click 來說,就是實(shí)現(xiàn)業(yè)務(wù)邏輯和通過裝飾器的方式定義參數(shù)(兩步)

它們的實(shí)現(xiàn)步驟越來越簡單,從四步簡化到了兩步。而今天的主角 fire 只需一步,現(xiàn)業(yè)務(wù)邏輯就夠了。

這簡直簡單的不可思議,為什么這樣做就夠了?我們不妨考慮下 Python  中的函數(shù),函數(shù)是不是可以對應(yīng)一個命令行程序,而函數(shù)的參數(shù)可以對應(yīng)命令行程序的參數(shù)和選項(xiàng)呢?再看看 Python  中的類,一個類是不是可以對應(yīng)一個命令行程序,而類中的每個實(shí)例方法就可以對應(yīng)子命令,實(shí)例方法中的參數(shù)就是對應(yīng)子命令的參數(shù)和選項(xiàng)。

這么一想,理論上確實(shí)是可以實(shí)現(xiàn)的,我們不妨通過下面的示例來看看 fire 是如何讓我們通過簡單的方式實(shí)現(xiàn)命令行程序。

3.1 使用函數(shù)

來看這么一個例子:

import firedef hello(name="World"):  return 'Hello  {name}!'.format(name=name)if __name__ == '__main__':   fire.Fire(hello)

在上述例子中定義一個 hello 函數(shù),它接受 name 參數(shù),并且有默認(rèn)值 "World"。使用 fire.Fire(hello)  即可非常簡單快速地實(shí)現(xiàn)命令功能,這個命令行就接受 --name 選項(xiàng),不提供時使用默認(rèn)值 "World",提供時就按提供的值來。

可在命令行中執(zhí)行下列命令:

$ 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=NAME

3.2 使用類

使用函數(shù)是最簡單的方式,如果我們想以更有組織的方式來實(shí)現(xiàn),比如使用類,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 類,它有兩個實(shí)例方法 double 和 triple,并且都接受 number 參數(shù),沒有默認(rèn)值。使用  fire.Fire(Calculator) 即可非常簡單快速地實(shí)現(xiàn)命令功能,這個命令行支持兩個子命令 double 和 triple,位置參數(shù) NUMBER  或選項(xiàng)參數(shù) --number

可在命令行中執(zhí)行下列命令:

$ 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

到此,相信大家對“怎么使用Python命令行庫fire”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI