python套路-函数式编程之匿名函数与偏函数

2022-03-02 13:41:51 浏览数 (1)

匿名函数

当调用函数时, 有时不需要显示定义好一个函数, 直接传入一个匿名函数更为方便。python可使用lambda表达式创建匿名函数。

代码语言:javascript复制
lambda 参数1[, 参数2, ...参数n]:表达式

lambda函数有如下特点:

  • lambda只是一个表达式,函数体比def简单很多;
  • lambda的主题有且只有一个表达式,而不是代码块;
  • lambda函数拥有自己的命名空间,不能访问自己参数列表之外或者全局命名空间里的参数。

例子一:使用匿名函数实现两个数字求和功能:

代码语言:javascript复制
!usr/bin/env python
func = lambda x,y:x y
print(func(1,2))

说明:

  • 匿名函数由于没有函数名称,因此可以避免函数名称的冲突。
  • 匿名函数同样可以作为返回值返回。

偏函数

偏函数是functools.partial()函数,将原函数当做第一个参数传入,原函数的各个参数依次作为partial()函数后续的参数。

functools.partial()的作用是把一个函数其中的一些参数设置为默认值, 返回一个新的函数, 调用这个新的函数更加简单。

例子一:将int()函数封装为默认base为2的偏函数。

代码语言:javascript复制
import functools
int2 = functools.partial(int,base=2)
print(int2('0011'))
print(int2('1111'))

说明:

  • int()函数功能时把字符串转换为整数,int()函数的提供了一个参数base,其默认值为10,即将字符串转换为10进制。
  • 使用functools.partial()函数可以通过将base设置为2构建一个转换为2进制的偏函数。
  • 使用偏函数的好处是当大量需要改变函数的默认值的时候,可以避免重复赋默认值。

0 人点赞