Python3 学习笔记25_函数式编程-偏函数_20180315

#!/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值