#!/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
Python3 学习笔记25_函数式编程-偏函数_20180315
最新推荐文章于 2022-01-27 12:37:06 发布