博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 中的匿名函数lamda和functools模块
阅读量:4941 次
发布时间:2019-06-11

本文共 1715 字,大约阅读时间需要 5 分钟。

为什么 要把匿名函数和functools模块写在一起?

因为 lamda函数和functools模块都是对函数一种增强或者是简化。

匿名函数:

为了解决那些功能很简单的需求而设计一次性的需求函数

#"有名函数"def calc(n):    return n**nprint(calc(10)) #换成匿名函数calc = lambda n:n**nprint(calc(10))

函数名 = lambda 参数 :返回值#参数可以有多个,用逗号隔开#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值#返回值和正常的函数一样可以是任意数据类型 functools模块 偏函数partial partial函数可以重新绑定函数的可选参数,生成一个callable的partial对象,这也认为是一个新函数(部分参数被固定的新函数)。

  functools.partial(func[,*args][, **keywords])

       Return a new  object which when called will behave like funccalled with the positional arguments args and keyword arguments keywords.

  If more arguments are supplied to the call, they are appended to args. If additional keyword arguments are supplied, they extend and override keywords.

# /usr/bin/env Python3# -*- encoding:UTF-8 -*-from functools import partial def sum(*args):    s = 0    for n in args:        s = s + n    return ssum_add_10 = partial(sum, 10)  # 10 作用在sum第一个参数的位置sum_add_10_20 = partial(sum, 10, 20)  # 10 20 分别作用在sum第一个和第二个参数的位置print('A____________我们看下原函数sum的函数地址入口:')print(sum)#
print('B______我们看下partial函数返回函数的地址入口:')print(partial(sum, 10))#functools.partial(
, 10)print(sum_add_10(1, 2, 3, 4, 5)) # --> 10 + 1 + 2 + 3 + 4 + 5 = 25
有几点要注意的: 绑定参数按顺序不能跳跃。所以也不怎么好用。 reduce函数 和内置函数reduce一样,据说是为了兼容性。

reduce的工作过程是 :在迭代sequence(tuple ,list ,dictionary, string等可迭代物)的过程中,首先把 前两个元素传给 函数参数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数, 函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。 如果传入了 initial 值, 那么首先传的就不是 sequence 的第一个和第二个元素,而是 initial值和 第一个元素。经过这样的累计计算之后合并序列到一个单一返回值

 
from functools import reduceresult = reduce(lambda x, y: str(x) + "" + str(y), [1, 2, 3, 4, 5])print(result)
((((1+2)+3)+4)+5) 要想尝试其他玩法参考博客:
 

转载于:https://www.cnblogs.com/wqbin/p/10225340.html

你可能感兴趣的文章
项目练习计划
查看>>
Xshell远程登录
查看>>
@RequestParam与@PathVariable的区别
查看>>
C语言之break和continue
查看>>
jquery.form.js使用
查看>>
LINQ to Entities 不支持 LINQ 表达式节点类型“ArrayIndex”。
查看>>
回顾2012,展望2013
查看>>
IntelliJ IDEA 内存优化最佳实践
查看>>
Maven之(一)Maven是什么
查看>>
Android调用拨打电话 代码
查看>>
机器学习技法笔记-Lecture 7 Blending and bagging
查看>>
四旋翼电池、电机、螺旋桨选型与搭配(转)
查看>>
GetEnvironmentVariable 获取常用系统变量(转)
查看>>
实现用VB.Net/(C#)开发K/3 BOS 插件的真正可行方法
查看>>
js笔试题系列之———基础类型与运算符
查看>>
data
查看>>
MVC利用BootstrapFileInput 插件上传图片
查看>>
ipad mini2 ios7 磁盘分析文件夹大小
查看>>
4、自动部署(通过脚本把名称服务器自动部署到155机上)
查看>>
软件工程概论作业03
查看>>