博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python.tornado.2.tornado.options
阅读量:6901 次
发布时间:2019-06-27

本文共 2333 字,大约阅读时间需要 7 分钟。

记录Tornado-4.0.2源码的阅读,学习,分析

options.py

1. imports 部分

1.1 __future__

1 from __future__ import absolute_import, division, print_function, with_statement

future_statement 即:from __futuren import XXX. 参见 

1.2 other imports from Python Library

1 import datetime2 import numbers3 import re4 import sys5 import os6 import textwrap

1.3 other imports from tornado

1 from tornado.escape import _unicode2 from tornado.log import define_logging_options3 from tornado import stack_context4 from tornado.util import basestring_type, exec_in

 

2. 定义的类

2.1 OptionParser类 

该类负责解析命令行的Option, 每个option被抽象为类_Option的对象。

2.2 _Option类

代表命令行上的每个option,该类为内部类。

2.3 全局的OptionParser对象

定义了一个全局的OptionParser对象。options.py提供的接口都是在该对象上进行操作的。

末尾调用了以下接口来将log相关的option添加到options.py模块中。

1 define_logging_options(options)

3. options.py对外提供的接口

[Todo]

3.1 define

1 def define(name, default=None, type=None, help=None, metavar=None,2            multiple=False, group=None, callback=None)

 

3.2 parse_command_line

1 def parse_config_file(path, final=True)

 

 


Learn From options.py

1. sys模块

import sys

https://docs.python.org/2/library/sys.html?highlight=sys#module-sys

sys._getframe([depth])

"Return a frame object from the call stack. If optional integer depth is given, return the frame

object that many calls below the top of the stack. If that is deeper than the call stack,  

is raised. The default fordepth is zero, returning the frame at the top of the call stack."

在options.py中的使用,在OptionParser类的define方法的实现中:

1         frame = sys._getframe(0)

  

2. inspect 模块

https://docs.python.org/2/library/inspect.html

"The  module provides several useful functions to help get information about live

objects such as modules, classes, methods, functions, tracebacks, frame objects, and code objects. "

该模块中包含 frame 类型(即: sys._getframe() 返回值的类型 )的说明。

 

3. unittest.mock.patch

mock 模块

Python中的单元测试。

4. 不了解的语法

4.1 return xxxx if yyyy else zzzz  

1     def value(self):2         return self.default if self._value is _Option.UNSET else self._value

 4.2 xxx for yyy, zzz in ttt

1     _TIMEDELTA_ABBREV_DICT = dict(2         (abbrev, full) for full, abbrevs in _TIMEDELTA_ABBREVS3         for abbrev in abbrevs)

4.3 正则表达式

1     _FLOAT_PATTERN = r'[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?'

 

 


 

Reference

1. http://www.tornadoweb.org/en/stable/options.html

转载于:https://www.cnblogs.com/cwgk/p/4433761.html

你可能感兴趣的文章
ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
查看>>
qml 一个信号与多个方法关联 和 c++信号与槽类似写法
查看>>
简说Python生态系统的14年演变
查看>>
response.setHeader的各种用法 ------ 笔记(一)
查看>>
关于@Override
查看>>
java Servlet接口及应用
查看>>
在汇编代码中调用C函数
查看>>
centos6.5 keepalived检测脚本
查看>>
使用Xcode7非美刀购买开发者帐号,非越狱安装IOS ipa
查看>>
并发编程与高并发学习笔记一
查看>>
json的那些事儿
查看>>
9月15日学习内容整理:类的命名空间和组合
查看>>
1419: Red is good
查看>>
Android开源项目分类汇总
查看>>
linux安装svn服务器
查看>>
Structure And Representation Of MIB Object Names - SNMP Tutorial
查看>>
OpenCV教程(46) 快速特征检测
查看>>
verilog语法实例学习(6)
查看>>
实验6
查看>>
在不确定图片宽高的前提下,让加载出的图片切合宽高固定的div但不变形不留白,object-fit: cover...
查看>>