Skip to content

Latest commit

 

History

History
69 lines (66 loc) · 3.04 KB

extras.md

File metadata and controls

69 lines (66 loc) · 3.04 KB

Extras Learned


  1. numbers模块 numbers模块主要是定义一些数字类型的抽象基类,即Abstract Base Classes (ABCs) for numbers。通过numbers定义的数字类型的继承关系如下如所示:

               Number
                  |
               Complex
                  | \
                  |  \
               Real complex
                  | \
                  |  \
            Rational float
                  |
                Integral
                  | \
                  |  \
                int  long
    

    因此:

    • issubclass(int, numbers.Integral)issubclass(long, numbers.Integral)返回True
    • issubclass(int, numbers.Real)issubclass(float, Complex)返回True
    • issubclass(int, float)issubclass(int, complex)返回False
  2. textwrap模块 textwrap模块的主要功能是格式化输出的字符串的格式。

  3. calendar模块 tornado.httputil模块的format_timestamp函数,可以将timestamp/time.struc_time/datetime.datetime的对象格式化成HTTP格式的时间格式。
    主要使用的是calendar.timegm函数。该函数和time.gmtime函数是互为逆反的。

    >>> import time
    >>> cur = time.time()
    >>> cur
    1446812390.056556
    >>> cur_gm = time.gmtime(cur)
    >>> cur_gm
    time.struct_time(tm_year=2015, tm_mon=11, tm_mday=6,     tm_hour=12, tm_min=19, tm_sec=50, tm_wday=4, tm_yday=310, tm_isdst=0)
    >>> import calendar
    >>> calendar.timegm(cur_gm)
    1446812390
    

并且datetime.datetime格式的数据也能通过datetime.datetime.utctimetuple转换成time.time_struct格式的时间数据。因此也可以通过calendar.timegm函数返回timestamp。 4. email.utils.formatdate函数
按照RFC2822格式(个人感觉跟iso8601格式很像)格式化timestamp。通过email.utils.formatdate(timestamp, usegmt=True)可以返回满足HTTP协议的时间格式 5. collections.namedtuple类 该类实现了命名tuple。调用传入的第一个参数是一个tuple的子类,并且这个子类有具体使用如下所示:

```
>>> Point = namedtuple('Point', ['x', 'y'])
>>> Point.__doc__                   # docstring for the new class
'Point(x, y)'
>>> p = Point(11, y=22)             # instantiate with positional args or keywords
>>> p[0] + p[1]                     # indexable like a plain tuple
33
>>> x, y = p                        # unpack like a regular tuple
>>> x, y
(11, 22)
>>> p.x + p.y                       # fields also accessable by name
33
>>> d = p._asdict()                 # convert to a dictionary
>>> d['x']
11
>>> Point(**d)                      # convert from a dictionary
Point(x=11, y=22)
>>> p._replace(x=100)               # _replace() is like str.replace() but targets named fields
Point(x=100, y=22)
```