absl (Abseil PythonCommon Libraries)(https://abseil.io/docs/python/)是用于构建Python应用程序的Python库代码集合,它包括三个子库:app, flags, logging。

app

  • app是Abseil Python应用程序的通用入口点。

flags

  • absl.flags定义了分布式的命令行系统。flags类型包括boolean, float, integer, list, string等,通过DEFINE_*函数来定义,其中的*表示flags类型。所有的flags都包括一个变量名称,默认值,help-string和可选的单字母名称。一些flags还包括其他参数。
  • DEFINE_*函数主要做了两件事情。第一,创建Flag对象;第二,将Flag对象注册到FlagValues对象中。FlagValues对象可浏览命令行参数并传递flag参数到相应的Flag对象中进行值检查和类型转换,转换后的flag值可作为FlagValues对象的属性使用。
  • 通过FlagValues对象可进入一个flag,如flags.FLAGS.myflag。
  • __main__模块将命令行参数传递给flags.FLAGS进行解析。

<代码示例>

编写代码test.py

from absl import app
from absl import flags FLAGS = flags.FLAGS #解析命令行参数,可帮助在不修改源码的情况下选择特定参数来运行程序 #接受任何输入并将其解释为字符串
flags.DEFINE_string('name', 'Jane Random', 'Your name.')
#将输入解释为整数型,可选的参数lower_bound和upper_bound用于规定最小值和最大值;如果命令行中的数值超过此范围,则产生FlagError
flags.DEFINE_integer('age', None, 'Your age in years.', lower_bound=0)
#将输入解释为浮点型,其他同EFINE_integer
flags.DEFINE_float("weight", None, "Your weight in kg.", lower_bound=0)
#通常不需要设置参数。True/Flase
flags.DEFINE_boolean('debug', False, 'Produces debugging output.')
#获取字符串列表,如果命令行中的值不在此列表中则报错。否则,会将此值赋值给FLAGS.flag
flags.DEFINE_enum('job', 'running', ['running', 'stopped'], 'Job status.') #DEFINE_enum()函数()中各元素分别代表name,default,enum_values,help
#接受命令行上以逗号分隔的字符串列表,并将它们存储在Python列表对象中
flags.DEFINE_list("food", None, "Your favorite food") def main(argv):
if FLAGS.debug:
print('non-flag arguments:', argv)
print('Hi', FLAGS.name)
if FLAGS.age is not None:
print('You are %d years old, and your job is %s' % (FLAGS.age, FLAGS.job))
if FLAGS.weight is not None:
print('Your weight is %d kg' % FLAGS.weight)
if FLAGS.food is not None:
print("Your favorite food(s): %s" % FLAGS.food) if __name__ == '__main__':
app.run(main)

执行test.py输出结果

~/tmp$ python test.py --name yaya --age=18 --weight=45 --debug=True --food apple,orange --job stopped
non-flag arguments: ['test.py']
Hi yaya
You are 18 years old, and your job is stopped
Your weight is 45 kg
Your favorite food(s): ['apple', 'orange']

python abseil库(app, flags, logging)总结的更多相关文章

  1. python的日志模块:logging;django的日志系统;django日志输出时间修改

    Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置 源代码 1.__init__.py包含以下类: StreamHandler Formatt ...

  2. Python日志库logging总结-可能是目前为止将logging库总结的最好的一篇文章

    在部署项目时,不可能直接将所有的信息都输出到控制台中,我们可以将这些信息记录到日志文件中,这样不仅方便我们查看程序运行时的情况,也可以在项目出现故障时根据运行时产生的日志快速定位问题出现的位置. 1. ...

  3. Python日志库logging总结

    转自  https://cloud.tencent.com/developer/article/1354396 在部署项目时,不可能直接将所有的信息都输出到控制台中,我们可以将这些信息记录到日志文件中 ...

  4. python常用库

    本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...

  5. Python常用库大全

    环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...

  6. python的库小全

    环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...

  7. TensorFlow学习笔记之--[tf.app.flags使用方法]

    很多时候在运行python代码的时候我们需要从外部定义参数,从而避免每次都需要改动代码.所以一般我们都会使用 argparse 这个库.其实TensorFlow也提供了这个功能,那就是 tf.app. ...

  8. TensorFlow tf.app&tf.app.flags用法介绍

    TensorFlow tf.app&tf.app.flags用法介绍 TensorFlow tf.app argparse  tf.app.flags 下面介绍 tf.app.flags.FL ...

  9. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  10. python 三方库

    ---------------- 这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护.内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理. ...

随机推荐

  1. iview table配合Tooltip使用的时候 气泡错位的问题

    Tooltip 气泡错位 点击table的单元格,实现遮盖文字的预览功能,但是气泡会发生偏移,看了Tooltip的样式发现 气泡是绝对定位, 想到子绝父相,于是给表格的td添加相对定位的功能,结果能解 ...

  2. 杭电oj 蟠桃记

    Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少 ...

  3. 050_Sublime For Salesforce

    之前安装工具都是在网上找的文章,照着步骤一点点来的,最近电脑升级所以要重新安装,花了一个小时终于搞好了,虽然说现在插件已经不维护了,但我觉得目前的工具还是可以够我用的: 1.我之前用的是3083版本, ...

  4. Rancher 快速构建k8s容器管理平台解决方案(图片见原文链接)

    转载自Rancher 快速构建k8s容器管理平台解决方案_IT干货的博客-CSDN博客_k8s容器管理平台 一.Rancher 概述 Rancher 是企业级多集群Kubernetes管理平台,一个为 ...

  5. element select多选选项卡页面抖动问题

    最近做项目是有个功能需要下拉框多选,然后碰到了一个问题就是选择选项的时候出现频繁抖动的情况 问题描述: 页面选择到三个选项时长度为三的时候就会开始抖动,其他长度没有问题,检索elements是发现选择 ...

  6. nuxt中asyncData和fetch的区别

    asyncData作用于页面pages,在组件中不能使用,并且asyncData中没有this,如果想要给data中的数据赋值,要在asyncData函数中return出去 fetch 作用于组件中c ...

  7. 上分之路 VP Codeforces Round #744 (Div. 3) ABDE

    VP情况 4 / 8 AC: A,B,D,E1 60 minutes WA: C 4 127   +00:02 +00:28 -7 +00:58 +00:39       手速还在线 D pair排个 ...

  8. md5信息摘要算法实现(python 和 go版本)

    纯手写实现的md5信息摘要算法 github地址如下 https://github.com/kittysmith5/dgst/blob/main/md5 python3版本代码 #!/usr/bin/ ...

  9. Restful Fast Request 添加前置脚本,实现不同环境免设置token 直接请求

    idea安装Restful Fast Request插件后,进行如下设置,并打开 项目全局参数 对话框 进入前置脚本 tab 编写如下groovy脚本代码(插件脚本语言默认支持groovy,该语言被称 ...

  10. L0范式、L1范式、L2范式解释通俗版

    L0范数是指向量中非0的元素的个数.(L0范数很难优化求解) L1范数是指向量中各个元素绝对值之和 L2范数是指向量各元素的平方和然后求平方根 L1范数可以进行特征选择,即让特征的系数变为0. L2范 ...