Numeric and Mathematical Modules

random

1
import random

classes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# random.Random
Random()
# methods:
seed([self,], a=None)
randint(a, b) # 随机一个[a,b]中的整数.
choice(self, seq) # 从seq中随机选择一个元素
uniform(self, a, b)
sample(self, population, k)
randint(self, a, b)
randrange(self, start, stop=None, step=1, _int=<type 'int'>, _maxwidth=9007199254740992L)

# random.SystemRandom(Random)
SystemRandom(Random)

# random.WichmannHill(Random)
WichmannHill(Random)

functions:

1
2
3
getrandbits(k)
random(self) # 随机一个小于1的数.
# 所有Random类的methods也可以直接使用.

fractions

functools

函数式编程相关的模块

1
import functools

classes:

1
2
3
4
5
# functools.partial
partial(func, *args, **keywords) # 返回functools.partial类型的对象, partial是functools内置的偏函数类类型.
RED = partial(lambda content, color: color + str(content) + Fore.RESET, color=Fore.RED)
RED("show me red") == lambda content, color: Fore.RED + str("show me red") + Fore.RESET
# 相当于通过partial传一个参数给func,然后剩下的参数通过返回的偏函数传入.这样可以固化一部分参数.

functions:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
reduce(function, sequence[, initial]) # 如果initial存在,就把initial作为function的第一个参数,如果function有两个参数,就再从sequence取第一个元素作为function的第二个参数,然后调用function,返回的结果作为function的第一个参数,再继续从sequence获取元素作为参数,继续调用function, 直到sequence为空.
reduce(lambda x,y: x+y, range(5))

cmp_to_key(mycmp)
total_ordering(cls)
update_wrapper(wrapper, wrapped, assigned=('__module__', '__name__', '__doc__'), updated=('__dict__',))

wraps(wrapped, assigned=('__module__', '__name__', '__doc__'), updated=('__dict__',))
# example:
def deco(func):
    @wraps(func):
    def wrapper(*args, **kwargs):
        """Docs for wrapper."""
        pass

@deco
def foo()
    """Docs for new function."""
    pass

# 不用wraps被装饰的函数foo的属性其实是原来函数的属性,也就是wrapper的属性
# 用了wraps被装饰的函数foo的属性就是foo自己的属性.
print foo.__name__
print foo.__doc__

operator

操作符相关的模块

1
import operator

decimal

itertools

1
import itertools

cmath

math

numbers