成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Google 開源的 Python 命令行庫:初探 fire

開發 后端 開源
本系列文章默認使用 Python 3 作為解釋器進行講解。若你仍在使用 Python 2,請注意兩者之間語法和庫的使用差異哦~

[[286655]]

一、前言

在本系列前面所有文章中,我們分別介紹了 argparse、docopt 和 click 的主要功能和用法。它們各具特色,都能出色地完成命令行任務。argparse 是面向過程的,需要先設置解析器,再定義參數,再解析命令行,最后實現業務邏輯。docopt 先用聲明式的語法定義出參數,再過程式地解析命令行和實現業務邏輯。click 則是用裝飾器的方式進一步簡化顯式的命令調用邏輯,但仍然不夠面向對象。

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

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

二、介紹

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

  • 能以簡單的方式生成 CLI
  • 是一個開發和調試 Python 代碼的實用工具
  • 能將現存代碼或別人的代碼轉換為 CLI
  • 使得在 Bash 和 Python 間的轉換變得更容易
  • 通過預先為 REPL 設置所需的模塊和變量,使得實用 REPL 更加容易

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

  1. pip install fire 

三、快速開始

回憶下使用 argparse、docopt 和 click 實現命令行程序的步驟:

  • 對于 argparse 來說,要先設置解析器,再定義參數,再解析命令行,最后實現業務邏輯(四步)
  • 對于 docopt 來說,要先定義定義接口描述,再解析命令行,最后實現業務邏輯(三步)
  • 對于 click 來說,就是實現業務邏輯和通過裝飾器的方式定義參數(兩步)

它們的實現步驟越來越簡單,從四步簡化到了兩步。而今天的主角 fire 只需一步,現業務邏輯就夠了。

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

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

3.1 使用函數

來看這么一個例子:

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

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

可在命令行中執行下列命令:

  1. $ python hello.pyHello World!$ python hello.py --name=ProdesireHello 
  2.  Prodesire!$ python hello.py --helpINFO: Showing help with the  
  3. command 'hello.py -- --help'.NAME    hello.pySYNOPSIS    hello.py  
  4. <flags>FLAGS    --name=NAME 

3.2 使用類

使用函數是最簡單的方式,如果我們想以更有組織的方式來實現,比如使用類,fire 也是支持的。

  1. import fireclass Calculator(object):  """A simple calculator  
  2. class."""  def double(self, number):    return 2 * number  def  
  3. triple(self, number):    return 3 * numberif __name__ == '__main__'
  4.  fire.Fire(Calculator) 

在上述例子中定義一個 Calculator 類,它有兩個實例方法 double 和 triple,并且都接受 number 參數,沒有默認值。使用 fire.Fire(Calculator) 即可非常簡單快速地實現命令功能,這個命令行支持兩個子命令 double 和 triple,位置參數 NUMBER 或選項參數 --number

可在命令行中執行下列命令:

  1. $ python calculator.py double 1020$ python calculator.py triple 
  2. --number=1545$ python calculator.py double --helpINFO: Showing help with 
  3. the command 'calculator.py double -- --help'.NAME    calculator.py 
  4. doubleSYNOPSIS    calculator.py double NUMBERPOSITIONAL ARGUMENTS    
  5. NUMBERNOTES    You can also use flags syntax for POSITIONAL ARGUMENTS 

四、小結

fire 的使用方式非常簡單,定一個 Python 對象,剩下的就交給 fire 來處理,可謂是非常的 Pythonic,這也是它會如此受歡迎的原因。

除了上面展示的內容,fire 還支持更多種類的 Python 對象,也擁有很多強大的功能,我們將在接下來幾節中逐步走近它。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2019-11-06 19:21:07

Pythonargparse解釋器

2024-01-25 09:19:34

PythonFire開源庫

2020-02-13 10:57:59

Python數據設計

2013-05-21 14:58:08

系統監視glances開源

2022-07-13 08:21:38

開源命令行工具Linux

2010-03-10 17:23:37

Python 命令行參

2015-07-01 09:15:46

linuxQuora命令行

2010-06-21 15:51:29

Linux命令Google服務

2020-12-10 16:16:08

工具代碼開發

2020-12-11 06:44:16

命令行工具開發

2010-11-16 11:50:21

oracle命令行登錄

2011-01-18 19:11:26

Postfix命令行

2010-03-11 15:55:23

Python命令行

2018-05-04 09:15:35

PythonPlumbum命令行

2022-04-09 10:02:59

HTTPLInux開源

2018-01-29 20:12:11

python翻譯命令行

2022-08-01 08:30:26

Python命令行

2010-07-15 10:47:22

Perl命令行

2012-02-08 16:37:36

ibmdw

2010-07-20 14:18:22

Perl命令行
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久av.com| 四虎最新视频 | 国产在线不卡 | 亚洲精品久久久久久一区二区 | 伊人春色在线观看 | 欧美一级在线免费观看 | 国产ts人妖系列高潮 | 亚洲精品综合 | 精品国产色 | 成人免费视屏 | 亚洲国产看片 | 中文字幕亚洲一区二区三区 | 91传媒在线播放 | 玖玖操| 超碰伊人久久 | 国产精品一区二区三区在线 | 午夜影院免费体验区 | 91在线免费观看网站 | 欧美a在线看| 亚洲va欧美va天堂v国产综合 | 手机av免费在线 | 国产精品自产av一区二区三区 | 久久久久久免费毛片精品 | 亚洲成人精品在线观看 | 老头搡老女人毛片视频在线看 | 欧美美女爱爱 | 亚洲精品一区中文字幕 | 成人在线免费视频 | 日韩欧美视频在线 | 精品乱码一区二区 | 99久久久无码国产精品 | 九九99精品| 欧美黄色一区 | 色狠狠一区 | 日韩精品1区2区3区 爱爱综合网 | 黄色一级大片在线免费看产 | 狠狠干美女| 久久9视频 | 日韩中文不卡 | 99免费精品视频 | 国产一区二区精品在线观看 |