lg04551

导航

 

functools模块

wraps 的作用是将原函数对象的指定属性复制给包装函数对象

reduce()函数也是Python内置的一个高阶函数。

reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

例如,编写一个f函数,接收x和y,返回x和y的和:

1
2
def f(x, y):
    return + y

调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

1
2
3
4
5
先计算头两个元素:f(13),结果为4
再把结果和第3个元素计算:f(45),结果为9
再把结果和第4个元素计算:f(97),结果为16
再把结果和第5个元素计算:f(169),结果为25
由于没有更多的元素了,计算结束,返回结果25

上述计算实际上是对 list 的所有元素求和。虽然Python内置了求和函数sum(),但是,利用reduce()求和也很简单。

reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算:

1
reduce(f, [13579], 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


 
posted on 2018-06-05 17:10  lg04551  阅读(64)  评论(0编辑  收藏  举报