谷歌开源 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.mzph.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;下面我们就查看下…