Python3 学习笔记25

xiaoxiao2021-02-28  51

#!/usr/bin/env python3 # -*- coding: utf-8 -*- # 学习网站:www.liaoxuefeng.com #**************************************************** # Python3 函数式编程-偏函数 * #**************************************************** print ("--------------------分割线------------------") #============ # 偏函数 #============ ''' functools模块中提供了偏函数(Partial function),此偏函数与数学中的偏函数 不一样,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以 做到这一点 ''' # int()函数可以把字符串转换为整数,当仅传入字符串时,int默认按十进制转换 print( int('10001') ) # 10001 # int函数提供base参数,默认值为10,可传入base参数,进行N进制的转换 print( int('10001', base=8) ) # 4097 print( int('10001', base=2) ) # 17 # 如需大量的二进制转换,每次int(x, base=2)非常麻烦,可单独定义一个函数 def int2(x, base=2): return int(x, base) print( int2('10001') ) # 17 # functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2() # 可以直接使用下面的代码创建一个新的函数int_2 import functools int_2 = functools.partial(int, base=2) print( int_2('10001') ) # 17 print( int_2('10001', base=8) ) # 4097 ''' functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置 默认值),返回一个新的函数,调用这个新函数会更简单 在int_2函数中,仅仅是把base参数重新设定默认值为2,也可以传入其他值例如第 36行传入base=8。 ''' # 创建偏函数时,实际上可以接收函数对象、*args和**kw这3个参数,当传入 # int_2 = functools.partial(int, base=2) 实际上固定了int()函数的关键字 # 参数base,也就是 int_2('10001')相当于kw = {'base':2} int('10010', **kw) max2 = functools.partial(max,10) # 实际上会把10作为*args的一部分自动加到左边,也就是 print( max2(5, 6, 7) ) # 10 # 相当于 args = (10, 5, 6, 7) print( max(*args) ) # 10
转载请注明原文地址: https://www.6miu.com/read-2627198.html

最新回复(0)