当前位置: 首页 > news >正文

网站建设详细教程视频教程竞价培训

网站建设详细教程视频教程,竞价培训,有什么做网站优化公司,服装品牌策划本文首发于HelloGitHub公众号#xff0c;并发表于Prodesire 博客。一、前言在近半年的 Python 命令行旅程中#xff0c;我们依次学习了 argparse、docopt、click 和 fire 库的特点和用法#xff0c;逐步了解到 Python 命令行库的设计哲学与演变。 本文作为本次旅程的终点并发表于Prodesire 博客。一、前言在近半年的 Python 命令行旅程中我们依次学习了 argparse、docopt、click 和 fire 库的特点和用法逐步了解到 Python 命令行库的设计哲学与演变。 本文作为本次旅程的终点希望从一个更高的视角对这些库进行横向对比总结它们的异同点和使用场景以期在应对不同场景时能够分析利弊选择合适的库为己所用。本系列文章默认使用 Python 3 作为解释器进行讲解。 若你仍在使用 Python 2请注意两者之间语法和库的使用差异哦~二、设计理念在讨论各个库的设计理念之前我们先设计一个计算器程序其实这个例子在 argparse 库的第一篇讲解中出现过也就是命令行程序接受一个位置参数它能出现多次且是数字默认情况下命令行程序会求出给定的一串数字的最大值如果指定了选项参数 --sum那么就会将求出给定的一串数字的和希望从各个库实现该例子的代码中能进一步体会它们的设计理念。2.1、argparseargparse 的设计理念就是提供给你最细粒度的控制你需要详细地告诉它参数是选项参数还是位置参数、参数值的类型是什么、该参数的处理动作是怎样的。 总之它就像是一个没有智能分析能力的初代机器人你需要告诉它明确的信息它才会根据给定的信息去帮助你做事情。以下示例为 argparse 实现的 计算器程序import argparse# 1. 设置解析器 parser argparse.ArgumentParser(descriptionCalculator Program.)# 2. 定义参数 # 添加位置参数 nums在帮助信息中显示为 num # 其类型为 int且支持输入多个且至少需要提供一个 parser.add_argument(nums, metavarnum, typeint, nargs,helpa num for the accumulator) # 添加选项参数 --sum该参数被 parser 解析后所对应的属性名为 accumulate # 若不提供 --sum默认值为 max 函数否则为 sum 函数 parser.add_argument(--sum, destaccumulate, actionstore_const,constsum, defaultmax,helpsum the nums (default: find the max))# 3. 解析参数 args parser.parse_args([--sum, 1, 2, 3]) print(args) # 结果Namespace(accumulatebuilt-in function sum, nums[1, 2, 3])# 4. 业务逻辑 result args.accumulate(args.nums) print(result) # 基于上文的 [--sum, 1, 2, 3] 参数accumulate 为 sum 函数其结果为 6从上述示例可以看到我们需要通过 add_argument 很明确地告诉 argparse 参数长什么样它是位置参数 nums还是选项参数 --sum它的类型是什么比如 typeint 表示类型是 int这个参数能重复出现几次比如 nargs 表示至少提供 1 个参数的是存什么的比如 actionstore_const 表示存常量然后它才根据给定的这些元信息来解析命令行参数也就是示例中的 [--sum, 1, 2, 3]。这是很计算机的思维虽然冗长但也带来了灵活性。2.2、docopt从 argparse 的理念可以看出它是命令式的。这时候 docopt 另辟蹊径声明式是不是也可以一个命令行程序的帮助信息其实已然包含了这个命令行的完整元信息那不就可以通过定义帮助信息来定义命令行docopt 就是基于这样的想法去设计的。声明式的好处在于只要你掌握了声明式的语法那么定义命令行的元信息就会很简单。以下示例为 docopt 实现的 计算器程序# 1. 定义接口描述/帮助信息 Calculator Program.Usage:calculator.py [--sum] num...calculator.py (-h | --help)Options:-h --help Show help.--sum Sum the nums (default: find the max). from docopt import docopt# 2. 解析命令行 arguments docopt(__doc__, options_firstTrue, argv[--sum, 1, 2, 3]) print(arguments) # 结果{--help: False, --sum: True, num: [1, 2, 3]}# 3. 业务逻辑 nums (int(num) for num in arguments[num])if arguments[--sum]:result sum(nums) else:result max(nums)print(result) # 基于上文的 [--sum, 1, 2, 3] 参数处理函数为 sum 函数其结果为 6从上述示例可以看到我们通过 __doc__ 定义了接口描述这和 argparse 中 add_argument 是等价的然后 docopt 便会根据这个元信息把命令行参数转换为一个字典。业务逻辑中就需要对这个字典进行处理。对比与 argparse对于更为复杂的命令程序元信息的定义上 docopt 会更加简单然而在业务逻辑的处理上由于 argparse 在一些简单参数的处理上会更加便捷比如示例中的情形相对来说 docopt 转换为字典后就把所有处理交给业务逻辑的方式会更加复杂2.3、click命令行程序本质上是定义参数和处理参数而处理参数的逻辑一定是与所定义的参数有关联的。那可不可以用函数和装饰器来实现处理参数逻辑与定义参数的关联呢而 click 正好就是以这种使用方式来设计的。click 使用装饰器的好处就在于用装饰器优雅的语法将参数定义和处理逻辑整合在一起从而暗示了路由关系。相比于 argparse 和 docopt 需要自行对解析后的参数来做路由关系简单了不少。以下示例为 click 实现的 计算器程序import sys import clicksys.argv [calculator.py, --sum, 1, 2, 3]# 2. 定义参数 click.command() click.argument(nums, nargs-1, typeint) click.option(--sum, use_sum, is_flagTrue, helpsum the nums (default: find the max)) # 1. 业务逻辑 def calculator(nums, use_sum):Calculator Program.print(nums, use_sum) # 输出(1, 2, 3) Trueif use_sum:result sum(nums)else:result max(nums)print(result) # 基于上文的 [--sum, 1, 2, 3] 参数处理函数为 sum 函数其结果为 6calculator()从上述示例可以看出参数和对应的处理逻辑非常好地绑定在了一起看上去就很直观使得我们可以明确了解参数会怎么处理这在有大量参数时显得尤为重要这边是 click 相比于 argparse 和 docopt 最明显的优势。此外click 还内置了很多实用工具和额外能力比如说 Bash 补全、颜色、分页支持、进度条等诸多实用功能可谓是如虎添翼。2.4、firefire 则是用一种面向广义对象的方式来玩转命令行这种对象可以是类、函数、字典、列表等它更加灵活也更加简单。你都不需要定义参数类型fire 会根据输入和参数默认值来自动判断这无疑进一步简化了实现过程。以下示例为 fire 实现的 计算器程序import sys import firesys.argv [calculator.py, 1, 2, 3, --sum]builtin_sum sum# 1. 业务逻辑 # sumFalse暗示它是一个选项参数 --sum不提供的时候为 False # *nums 暗示它是一个能提供任意数量的位置参数 def calculator(sumFalse, *nums):Calculator Program.print(sum, nums) # 输出True (1, 2, 3)if sum:result builtin_sum(nums)else:result max(nums)print(result) # 基于上文的 [1, 2, 3, --sum] 参数处理函数为 sum 函数其结果为 6fire.Fire(calculator)从上述示例可以看出fire 提供的方式无疑是最简单、并且最 Pythonic 的了。我们只需关注业务逻辑而命令行参数的定义则和函数参数的定义融为了一体。不过有利自然也有弊比如 nums 并没有说是什么类型也就意味着输入字符串abc也是合法的这就意味着一个严格的命令行程序必须在自己的业务逻辑中来对期望的类型进行约束。三、横向对比最后我们横向对比下argparse、docopt、click 和 fire 库的各项功能和特点Python 的命令行库种类繁多、各具特色。结合上面的总结可以选择出符合使用场景的库如果几个库都符合那么就根据你更偏爱的风格来选择。这些库都很优秀其背后的思想很是值得我们学习和扩展。相关文章Python 命令行之旅初探 argparsePython 命令行之旅深入 argparse 一Python 命令行之旅深入 argparse二Python 命令行之旅使用 argparse 实现 git 命令Python 命令行之旅初探 docoptPython 命令行之旅深入 docoptPython 命令行之旅使用 docopt 实现 git 命令Python 命令行之旅初探 clickPython 命令行之旅深入 click 之参数篇Python 命令行之旅深入 click 之选项篇Python 命令行之旅深入 click 之命令篇Python 命令行之旅深入 click 之增强功能Python 命令行之旅使用 click 实现 git 命令Python 命令行之旅初探 fire Python 命令行之旅深入 fire一 Python 命令行之旅深入 fire二 Python 命令行之旅fire 实现 git 命令Python 命令行之旅argparse、docopt、click 和 fire 总结篇
http://www.zqtcl.cn/news/812426/

相关文章:

  • 做西餐网站wordpress 作者栏
  • 创建了网站安卓做视频网站
  • asp自助建站系统房地产楼盘微信网站建设营销方案
  • 网站建设公司发展方向及趋势低代码小程序开发平台
  • 临沂网站建设企业响应式网站首页
  • 福州网上商城网站建设wordpress登录界面logo
  • 子目录网站wordpress无中断音乐插件
  • 网站开发算是研发支出吗淘宝客网站建设的策略
  • 如果在工商局网站上做股权质押刷推广链接的网站
  • 保定建站公司模板wordpress 华为云
  • 好的网页设计网站推荐开发定制软件公司
  • 深圳做网站设计多媒体网站开发
  • 什么是网站组件高端网站设计高端网站制作
  • 网易网站建设深圳专业营销网站制作
  • 有口碑的佛山网站建设东莞网约车资格证官网登录入口
  • 网站建设合同 保密条款wordpress网站手机端
  • 汕头建站费用wordpress转cms
  • 全美网站开发PHP 网站开发 重点知识
  • 电商网站建设重要性一个公司可以做几个网站吗
  • 婚恋网站系统淘宝联盟推广做网站违法
  • 双鸭山网站建设公司百度电脑版官网下载
  • 网站开发项目名html欧美网站模板
  • 成都哪里有做网站的雪樱wordpress主题
  • 深圳建站模板公司微商管理系统
  • 贸易建设网站网页美工设计图片
  • 网站建设尺寸规范国外h5网站模板下载
  • 怎么区分网站的好坏软件定制化开发的知识产权归属
  • 网站建设客户需求分析调研表网站建设企业网站
  • 建设网站要注意什么问题临沂网站建设团队
  • 怎么做网站和注册域名互联网行业的工作岗位