加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

各人都说好用的 Python 呼吁行库:click

发布时间:2019-11-08 07:34:12 所属栏目:建站 来源:HelloGitHub
导读:【线下技能沙龙】11月23日,多云期间开启企业营业新高度,安详怎样与时俱进? 一、媒介 在本系列前面几篇文章中,我们别离先容了 argparse 和 docopt 的首要成果和用法。它们各具特色,都能精彩地完成呼吁利用命。argparse 是面向进程的,必要先配置理会器
副问题[/!--empirenews.page--] 【线下技能沙龙】11月23日,多云期间开启企业营业新高度,安详怎样与时俱进?

 一、媒介

在本系列前面几篇文章中,我们别离先容了 argparse 和 docopt 的首要成果和用法。它们各具特色,都能精彩地完成呼吁利用命。argparse 是面向进程的,必要先配置理会器,再界说参数,再理会呼吁行,最后实现营业逻辑。而 docopt 先用声明式的语法界说出参数,再进程式地理会呼吁行和实现营业逻辑。在一些人看来,这些方法都不足优雅。

各人都说好用的 Python 呼吁行库:click

目前天要先容的 click[2] 则是用一种你很熟知的方法来玩转呼吁行。呼吁行措施本质上是界说参数和处理赏罚参数,而处理赏罚参数的逻辑必然是与所界说的参数有关联的。那可不行以用函数和装饰器来实现处理赏罚参数逻辑与界说参数的关联呢?而 click 正好就是以这种方法来行使的。

本系列文章默认行使 Python 3 作为表明器举办讲授。若你仍在行使 Python 2,请留意两者之间语法和库的行使差别哦~

二、先容click

是一个以尽也许少的代码、以组合的方法建设美妙的呼吁行措施的 Python 包。它有很高的可设置性,同时也能开箱即用。

它旨在让编写呼吁行器材的进程既快速又风趣,还能防备因为无法实现预期的 CLI API 所发生挫败感。它有如下三个特点:

  • 恣意嵌套呼吁
  • 自动天生辅佐
  • 支持运行时耽误加载子呼吁

三、快速开始

3.1 营业逻辑

起首界说营业逻辑,是不是感受到有些难以置信呢?

岂论是 argparse 照旧 docopt,营业逻辑都是被放在最后一步,但 click 却是放在第一步。细想想 click 的这种方法才更切合人的思想吧?岂论用什么呼吁行框架,我们最终体谅的就是实现营业逻辑,其余的能省则省。

我们以官方示例为例,来先容 click 的用法和哲学。假设呼吁行措施的输入是 name 和 count,成果是打印指定次数的名字。

那么在 hello.py 中,很轻易写出如下代码:

  1. def hello(count, name): 
  2.     """Simple program that greets NAME for a total of COUNT times.""" 
  3.     for x in range(count): 
  4.         click.echo('Hello %s!' % name) 

这段代码的逻辑很简朴,就是轮回 count 次,行使 click.echo 打印 name。个中,click.echo 和 print 的浸染相似,但成果越发强盛,能处理赏罚好 Unicode 和 二进制数据的环境。

3.2 界说参数

很显然,我们必要针对 count 和 name 来界说它们所对应的参数信息。

  • count 对应为呼吁行选项 --count,范例为数字,我们但愿在不提供参数时,其默认值是 1
  • name 对应为呼吁行选项 --name,范例为字符串,我们但愿在不提供参数时,能给人提醒

行使 click,就可以写成下面这样:

  1. from click import click 
  2.  
  3. @click.command() 
  4. @click.option('--count', default=1, help='Number of greetings.') 
  5. @click.option('--name', prompt='Your name', 
  6.               help='The person to greet.') 
  7. def hello(count, name): 
  8.     ... 

在上面的示例中:

  1. 行使装饰器的方法,即界说了参数,又将之与处理赏罚逻辑绑定,这真是优雅。和 argparse、docopt 比起来,就少了一步绑定进程
  2. 行使 click.command 暗示 hello 是对呼吁的处理赏罚
  3. 行使 click.option 来界说参数选项
  • 对付 --count 来说,行使 default 来指定默认值。而因为默认值是数字,进而体现 --count 选项的范例为数字
  • 对付 --name 来说,行使 prompt 来指定未输入该选项时的提醒语
  • 行使 help 来指定辅佐信息

岂论是装饰器的方法、照旧各类默认举动,click 都是像它的先容所说的那样,让人尽也许少地编写代码,让整个进程变得快速而风趣。

3.3 代码梳理

行使 click 的方法很是简朴,我们将上文的代码汇总下,以有一个更清楚的熟悉:

  1. # hello.py 
  2. import click 
  3.  
  4. @click.command() 
  5. @click.option('--count', default=1, help='Number of greetings.') 
  6. @click.option('--name', prompt='Your name', 
  7.               help='The person to greet.') 
  8. def hello(count, name): 
  9.     """Simple program that greets NAME for a total of COUNT times.""" 
  10.     for x in range(count): 
  11.         click.echo('Hello %s!' % name) 
  12.  
  13. if __name__ == '__main__': 
  14.     hello() 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读