• Python.tornado.2.tornado.options


    记录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. 参见 XiaoKL学Python(C)__future__

    1.2 other imports from Python Library

    1 import datetime
    2 import numbers
    3 import re
    4 import sys
    5 import os
    6 import textwrap

    1.3 other imports from tornado

    1 from tornado.escape import _unicode
    2 from tornado.log import define_logging_options
    3 from tornado import stack_context
    4 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, ValueError 

    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 inspect 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_ABBREVS
    3         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

  • 相关阅读:
    【 js 基础 】【 源码学习 】源码设计 (更新了backbone分析)
    【 js 基础 】【读书笔记】作用域和闭包
    【 js 基础 】【 源码学习 】 setTimeout(fn, 0) 的作用
    入职一个月快速熟悉大型Vue项目经验感想
    Git 实习一个月恍然大悟合集
    不断更新:整理常见的闭包问题
    (转)当margin-top、padding-top的值为百分比时是如何计算的?
    2019年8月面试腾讯前端开发实习生记录
    vue-cli2.X中引入高德地图,将其设为全局对象
    学习整理:用webpack4.x构建基本项目
  • 原文地址:https://www.cnblogs.com/cwgk/p/4433761.html
Copyright © 2020-2023  润新知