functools模块
wraps 的作用是将原函数对象的指定属性复制给包装函数对象
reduce()函数也是Python内置的一个高阶函数。
reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
例如,编写一个f函数,接收x和y,返回x和y的和:
| 1 2 | deff(x, y):    returnx +y | 
调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:
| 1 2 3 4 5 | 先计算头两个元素:f(1, 3),结果为4;再把结果和第3个元素计算:f(4, 5),结果为9;再把结果和第4个元素计算:f(9, 7),结果为16;再把结果和第5个元素计算:f(16, 9),结果为25;由于没有更多的元素了,计算结束,返回结果25。 | 
上述计算实际上是对 list 的所有元素求和。虽然Python内置了求和函数sum(),但是,利用reduce()求和也很简单。
reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算:
| 1 | reduce(f, [1, 3, 5, 7, 9], 100) | 
结果将变为125,因为第一轮计算是:
计算初始值和第一个元素:f(100, 1),结果为101。
partial
functools.partial(func, *args, **keywords),函数装饰器,返回一个新的partial对象。调用partial对象和调用被修饰的函数func相同,只不过调用partial对象时传入的参数个数通常要少于调用func时传入的参数个数。当一个函数func可以接收很多参数,而某一次使用只需要更改其中的一部分参数,其他的参数都保持不变时,partial对象就可以将这些不变的对象冻结起来,这样调用partial对象时传入未冻结的参数,partial对象调用func时连同已经被冻结的参数一同传给func函数,从而可以简化调用过程。
如果调用partial对象时提供了更多的参数,那么他们会被添加到args的后面,如果提供了更多的关键字参数,那么它们将扩展或者覆盖已经冻结的关键字参数。
partial对象的调用如下,
import functools
def add(a,b):
    return a + b
add3 = functools.partial(add,3)
add5 = functools.partial(add,5)
print add3(4)
print add5(10)
print(random.random())            #0,1;大于0且小于1之间的小数
print(random.randint(1,3))          #大于等于1且小于等于3之间的整数
print(random.randrange(1,3))       #大于等于1且小于3之间的整数
print(random.choice([1,'a',[1,2,3]]))   #从定义的列表中随机选取
print(random.sample([1,2,3,4,5],3))   #列表中元素任选(3)个数
print(random.uniform(1,3))          #大于1小于3的小数
item=[1,3,5,7,9]
random.shuffle(item)               #打乱item的顺序相当于洗牌
shutil模块
压缩
import shutil
ret=shutil.make_archive()
解压
import tarfile
t=tarfile.open(目录)
sys模块
sys.argv
sys.path
json的中间格式为字符串,用t写入文件
Pickle的中间格式为bytes,用b写入文件
XML模块
xml下的元素对应三个特质,tag,attrib,text
  
                    
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号