当前位置: 首页 > 后端技术 > Python

一行命令实现的功能?这就是谷歌工程师的做法

时间:2023-03-26 11:41:51 Python

最近想尝试把自己一起做的一些小工具打包,合成一个Python实用书的通用工具箱分享给大家。这个工具箱非常强大,包括但不限于:一行命令提取音乐高潮,一行命令人脸识别,一行命令文本分类……等等,敬请期待!不过制作这样一个工具箱的原理并不复杂,就是将用户需要的自定义参数直接传入Python通过命令运行,用户不需要管理代码,也不需要需要看懂代码,直接用。但是,在制作工具箱的时候,发现了这样一个问题。常用的命令行参数传递工具是不够用的。比如下面这个argparse的简单例子,它让Python命令在运行的时候接受一个数字-n或者--number,然后把这个数字传给Calculator的double进行计算,单行实现功能命令:#!/usr/bin/python#-*-coding:utf-8-*-importargparseclassCalculator(object):"""Simplearithmetic."""defdouble(self,number):print(2*number)defmain():parse=argparse.ArgumentParser()parse.add_argument("-n","--number",type=float,help="Thevalueusedtopassinnumber")args=parse.parse_args()计算器().double(args.number)if__name__=='__main__':main()use:$python1.py--number24.0看起来很简单,但我还是觉得太罗嗦了,如果我有很多方法,不要'你想定义很多参数吗?如果我有很多类方法,我不需要全部调用它们吗?Google的工程师和我有同样的想法:简化它!他们开发了一个名为Fire的模块。这个模块完美的解决了我的问题,简化了很多代码,请往下看。1.准备工作在开始之前,您需要确保您的计算机上已经安装了Python。如果没有,请访问这篇文章:超详细的Python安装指南进行安装。安装好Python后,Windows环境打开Cmd(开始—运行—CMD),苹果系统环境打开Terminal(command+空格进入Terminal)。进入我们刚刚下载的文件夹,输入如下命令安装需要的模块:如果pipinstallfire看到Successfullyinstalledfire,则安装成功。2.Lianlianshou这个包比argparse用起来舒服多了。比如我们把文章开头提到的例子简化一下:importfireclassCalculator(object):"""简单计算。"""defdouble(self,number):print(2*number)if__name__=='__main__':fire.Fire(Calculator)$python1.pydouble1020多简洁啊!你明白吗?它可以将参数作为Fire指定对象的目标函数,后面的数据就是传递给函数的值,最后计算并输出结果。也就是说,不管你有多少“工具”,都可以把它的调用函数放到一个类中,实现以函数名为参数的调用方法。这样一来,我们就可以省去很多parse.add_argument的重复操作。3、有什么比较简单的玩法?其实还有更简单的玩法?编辑不要吹嘘不会起草。我很善良,就像一个可以吹牛的人:**import**fireenglish='HelloWorld'chinese='Hello,world'fire.Fire()$python1.pyenglishHelloWorld$python1.pychinese你好,World就是说可以用来直接调用变量。如果你的函数产生的结果都在变量上,你可以不带参数直接获取。它也可以直接用在函数上,例如对数字排序:sorted_itemsif__name__=='__main__':fire.Fire(order_by_value)$python1.py2030112030太舒服了,我用这个工具一天可以做十个工具(娃娃娃娃禁止),希望大家可以把它用在你经常需要用到的工具上,在留言区分享你的开源项目,一行命令就能得到想要的结果不是很好吗?我们的文章到这里就结束了,如果你想要我们今天的Python实战教程,请继续关注我们。如果对您有帮助,请点击下方的赞/观看。有什么问题可以在下方留言区留言,我们会耐心解答!Python实战宝典(pythondict.com)不只是一个合集欢迎关注公众号:Python实战宝典原文来自Python实战宝典:一行命令实现功能?这就是谷歌工程师所做的