谷歌開源 Python Fire:可自動生成命令行接口

為什么80%的碼農都做不了架構師?>>> ??hot3.png

今天我們很高興地宣布 Python Fire 開源。Python Fire 可從任何 Python 代碼生成命令行接口(command line interfaces (CLIs)),簡單地調用任意 Python 程序中的 Fire 函數以將那個程序自動地轉化為 CLI。該庫可通過 `pip install fire` 從 pypi 獲取,也可參考 Github 上的資源。

Python Fire 自動把你的代碼轉化成一個 CLI,而不需要你做任何額外工作。你不必定義參數、設置幫助信息或寫一個主函數定義代碼如何運行。相反地,你只需從主模塊調用 `Fire` 函數,Python Fire 會接管剩下的一切。它使用檢索將任何 Python 對象(無論是類、對象、字典、函數,甚至是整個模塊)轉化為命令行接口,并輸出標注標簽和文檔,并且指令行界面會隨著編碼的變化保持實時更新。

為了說明這一點,讓我們看一個簡單的例子。

#coding: utf-8import fireclass Example(object):def hello(self, name='world'):"""Says hello to the specified name."""return 'Hello {name}!'.format(name=name)def demo(self, key):return keydef main():fire.Fire(Example)if __name__ == '__main__':  main()

執行:

?

$ python fire_demo.py hello
Hello world!
$ python fire_demo.py demo
Fire trace:
1. Initial component
2. Instantiated class "Example" (fire_demo.py:5)
3. Accessed property "demo" (fire_demo.py:10)
4. ('The function received no value for the required argument:', 'key')Type:        instancemethod
String form: <bound method Example.demo of <__main__.Example object at 0x037C33D0>>
File:         fire_demo.py
Line:        10Usage:       fire_demo.py demo KEYfire_demo.py demo --key KEY$ python fire_demo.py demo
test

?

當然你可以繼續像使用 Python 普通庫那樣使用這個模塊,從而你可以使用跟 Bash 和 Python 完全一樣的的代碼。如果你正在寫一個 python 庫,那么在試驗這個模塊的時候你就不需要更新你的主要方法(method)或客戶端。僅僅只需要以命令行的方式運行一部分你正在試驗的庫。即使這些庫改變了,該命令行工具仍然保持更新。
在 Google,工程師們使用 Python Fire 從 python 庫生成命令行工具。因為我們有使用 Python 圖像庫(Python Imaging Library/PIL)和 Fire 建立的圖像處理工具。在谷歌大腦,我們使用由 Fire 構建的實驗管理工具,該工具能夠和 Python 或 Bash 同等程度地管理實驗。
每個 Fire CLI 都帶有交互模式。運行 CLI 時使用「-interactive」旗標和命令行以及其他已定義的變量來登錄 IPython REPL。請務必查看 Python Fire 的文檔,從而了解 Fire 更多實用的特征。
因為 Python Fire 十分簡單、普遍和強大,我希望能為你的項目提供一個十分有效的庫。

?

轉載于:https://my.oschina.net/yehun/blog/870925

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456904.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456904.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456904.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tcp ip計算機網絡協議,一篇文章帶你熟悉 TCP/IP 協議-(一)

一、 計算機網絡體系結構分層不難看出&#xff0c;TCP/IP 與 OSI 在分層模塊上稍有區別。OSI 參考模型注重“通信協議必要的功能是什么”&#xff0c;而 TCP/IP 則更強調“在計算機上實現協議應該開發哪種程序”。二、 TCP/IP 基礎1. TCP/IP 的具體含義從字面意義上講&#xff…

遠程控制python

import telnetlibdef telnetDoSomething(IP,user,passwd,command):try:# 連接服務器telnet telnetlib.Telnet(IP)# 設置調試級別telnet.set_debuglevel(2)# 讀取輸入用戶名信息rt telnet.read_until("Login username:".encode("utf-8"))# 寫入用戶名tel…

Random Forest算法參數解釋及調優

文章介紹了如何對隨機森林模型進行參數調優 原文來自&#xff1a;http://www.analyticsvidhya.com/blog/2015/06/tuning-random-forest-model/ 為什么要調整機器學習算法&#xff1f; 一個月以前&#xff0c;我在kaggle上參加了一個名為TFI的比賽。 我第一次提交的結果在50%…

浮動問題

- 浮動很多時候是用來解決多列顯示的問題- 浮動之后變為inline-block(浮動文本必須制定width)- 浮動之后會脫離文檔流- 浮動后的元素不會存在margin的垂直方向的問題 - 浮動之后會影響周圍元素的布局- 浮動不會超出父級元素- 浮動效果只會影響后面的元素&#xff08;包括自己的…

Servlet3.0新特性

1 Servlet3.0新特性概述 使用要求&#xff1a;MyEclipse10.0或以上版本&#xff0c;發布到Tomcat7.0或以上版本&#xff0c;創建JavaEE6.0應用&#xff01;  Servlete3.0的主要新特性如下三部分&#xff1a;    使用WebServlet、WebFilter、WebListener三個注解來替代we…

計算機系統遵循,自考《計算機系統結構》第10章精講

第十章 新型計算機系統結構本章只作一般要求&#xff0c;了解基本原理和概況。一、計算模型分類(識記)計算模型是描述如何在計算機中完成計算的一種概念性方法&#xff0c;不涉及硬件和軟件細節。它給出了完成計算所必須遵循的基本規則。計算機系統結構是有關計算模型的一個具體…

re模塊的使用

import re # pip 包管理工具r re.match函數 原型&#xff1a;match(pattern, string, flags0) pattern: 匹配的正則表達式 string: 要匹配的字符串 flags:標志位&#xff0c;用于控制正則表達式的匹配方式,值如下 re.I 忽略大小寫 re.L 做本地話識別 re.M 多行匹配&…

Random Forest隨機森林概述

引言 在機器學習中&#xff0c;隨機森林由許多的決策樹組成&#xff0c;因為這些決策樹的形成采用了隨機的方法&#xff0c;因此也叫做隨機決策樹。隨機森林中的樹之間是沒有關聯的。當測試數據進入隨機森林時&#xff0c;其實就是讓每一顆決策樹進行分類&#xff0c;最后取所…

走出半生,望你歸來仍是程序員

在世二十七年&#xff0c;自認為積累了一點人生經驗。思索著當你還在你娘胎的日子里&#xff0c;整理一番留給以后的你&#xff0c;當作你以后漫漫人生路上的參考。我保證&#xff0c;倘若哪天你發現某條不對或者跟你的想法不一樣&#xff0c;你能敞開心扉與我交談&#xff0c;…

kd tree學習筆記 (最近鄰域查詢)

https://zhuanlan.zhihu.com/p/22557068 http://blog.csdn.net/zhjchengfeng5/article/details/7855241 KD樹在算法競賽中主要用來做各種各樣的平面區域查詢&#xff0c;包含則累加直接返回&#xff0c;相交則繼續遞歸&#xff0c;相離的沒有任何貢獻也直接返回。可以處理圓&am…

正則表達式的元素符

import reprint("----------匹配單個字符與數字----------") r . 匹配除換行符以外的任意字符 [0123456789] []是字符集合&#xff0c;表示匹配方括號中所有所包含的任意一個字符 [liuwang] [] 匹配‘l&#xff0c;i&#xff0c;u 中任意一個字符…

圖像影音型計算機主板選擇什么,電腦主板型號在哪里看? 每日一答

電腦主板型號在哪里看&#xff1f;想要看主板的型號其實非常簡單&#xff0c;一般來說&#xff0c;主板上都會有一個專門的身份標識&#xff0c;位于PCI-E顯卡插槽之間&#xff0c;比如下方這張圖&#xff0c;就清晰地寫明了MAXIMUS X APEX的標識&#xff0c;熟悉的玩家一眼就能…

使用葉神模擬器無法訪問本機服務器的問題(報錯:java.net.ConnectException: failed to connect to /127.0.0.1 (port 5000) )

最近打算用夜神模擬器來和本機服務器做一些信息交互的功能&#xff0c;但是服務器搭建好了&#xff0c;用葉神模擬器卻無法訪問。折騰了大半天才發現原來是模擬器的問題。 具體過程如下&#xff1a; 搭建好服務器后&#xff0c;在本機上訪問“http://127.0.0.1:5000/”&#…

NSObject協議中方法:description 和 debugDescription

description基本概念 1.NSLog("%", objectA);這會自動調用objectA的description方法來輸出ObjectA的描述信息. 2.description方法默認返回對象的描述信息(默認實現是返回類名和對象的內存地址) 3.description方法是基類NSObject 所帶的方法,因為其默認實現是返回類名…

re模塊的深入

import re 字符串切割str1 "allen is a good man" print(str1.split()) print(re.split((r" "),str1)) re.finditer函數 原型&#xff1a;finditer(pattern, string, flags0) pattern: 匹配的正則表達式 string: 要匹配的字符串 flags:標志位&…

身份證

<?php defined(IN_IA) or exit(Access Denied);class check {// $num為身份證號碼&#xff0c;$checkSex&#xff1a;1為男&#xff0c;2為女&#xff0c;不輸入為不驗證public function checkIdentity($num, $checkSex ) {// 不是15位或不是18位都是無效身份證號if (strl…

鼓勵參與計算機考試宣傳標語,誠信考試的宣傳標語(精選60條)

誠信考試的宣傳標語(精選60條)誠信考試&#xff0c;做文明公民&#xff0c;既是時代需要&#xff0c;也是做人的基本準則。下面是小編收集的誠信考試的宣傳標語(精選60條)&#xff0c;歡迎閱讀。1、讓舞弊遠離校園&#xff0c;讓誠信常駐心中2、刻苦學習&#xff0c;認真做人3、…

初學大數據之如何選擇機器學習算法

最近在國外網站看到一篇不錯的文章&#xff0c;所以就翻譯過來給大家分享一下。主要介紹初學者怎么選擇機器學習算法,希望對各位初學者有幫助。 原文如下: 一個初學者面臨各種機器學習算法的典型問題是“我應該使用哪種算法&#xff1f;”問題的答案取決于許多因素&#xff0…

Django查詢 – id vs pk

當編寫django查詢時&#xff0c;可以使用id / pk作為查詢參數。 Object.objects.get(id1) Object.objects.get(pk1) pk代表主鍵(primary key)&#xff0c; pk更加獨立于實際的主鍵字段&#xff0c;即不必關心主鍵字段是否被稱為id或object_id或其他。 如果您具有不同主鍵字…

Tomcat的Session管理(三)

摘要&#xff1a;PersistentManager與StandardManager的異同。 之前兩篇關于session的文章主要討論了session相關的創建、查詢、過期處理。而我們查看源碼的時候都是默認實現是StandardManager類&#xff0c;實際上實現也可以是PersistentManager類&#xff0c;下面我們就查看下…