python中函数之偏函数

Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。
functools模块 函数工具模块
reduce()
partial()偏函数
偏函数是通过将一个函数的部分参数预先绑定为某些值
从而得到一个新的具有较少可变的函数
warps()
为了不影响python的使用,当函数被装饰器函数装饰后,消除装饰器带来的一些副作用
partial()函数

from functools import partial    //引用一个模块
def add(x, y, c):         //定义一个函数拥有三个传参
    print(x)		//并输出传参的值,方便我们直接查看函数partial的作用
    print(y)
    print(c)
    return x + y + c		//最后输出三个数的和
a = add(1, 3, 6)	//调用函数
print(a)
add1 = partial(add, y =2)   //这里就是通过partial函数固定函数中的一个参数
r = add1(x = 50, c = 30)
print(r)
add2 = partial(add, y =20, c = 40)   //这里是固定两个参数
print(add2(56))    //调用函数并打印返回值
#通过这里可以看到partial的作用为固定函数中参数的值并生成一个新的函数,
使我们能够在不修改原函数的情况下,调用函数

reduce()函数
格式:reduce(function, iterable)
参数function是函数,此函数的参数必须是两个。(lambda x, y: x * y可用匿名函数)
参数iterable是一个可迭代对象

from functools import reduce     //加载模块
list1 = list(range(1, 11))      //生成一个列表
test = reduce(lambda x, y:x + y, list1)  //这是reduce和匿名函数的配合使用最后结果为求和
print(test)
list2 = ['t', 'e', 's', 't']
test2 = reduce(lambda x, y:x + y, list2)  //也可对字符串进行拼接
print(test2)

wraps()函数
wraps的作用是将被装饰的函数的一些属性传给修饰器函数(wrapper),让它具备某些功能
在不影响装饰器使用的情况下,可以直接使用被调用函数的内置功能

from functools import wraps
def test(func):
    @wraps(func)     //在这里添加wraps函数,注意:添加wraps函数,要在前面添加@
    def wrapper(*args, **kwargs):  
        print('test1')
        func(*args, **kwargs)   
        //这里使代表调用函数test2(),因为前面test2已经作为参数func给了test函数

    return wrapper

@test
def test2():
    print('test2')
test2()
print(test2.__name__)    #加上wraps后函数test2依然时函数test2,并没有改变
'''
#加了@wraps以后能够在使用装饰器的情况下,再使用自身的内置功能。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值