一、 概述
本文分析python3的lambda与闭函数的实现原理,及多种用法示例
二、 lambda工作原理
1、 lambda定义
lambda 参数列表:1行代码表达式
参数列表,是一个函数的参数列表,可以有任意多个参数,参数可为任何类型
1行代码表达式,只能1行代码的表达式,不能多行代码,不同于java,没有{},begin/end等
2、 lambda可以出现的地方
list参数
dict参数
tuple参数
map函数等
。。。
3、 示例如下
# -*- coding: utf-8 -*-
"""
2018-05-09 09:43:18
作者: 刘明
"""
#用列表list参数表示lambda函数
def fun1(a,b):
print('fun1=%s,a=%d,b=%d'%(fun1.__name__,a,b))
return a+b
m1=[12,35,range(10,28),
fun1,
lambda a,b:
#print('lambda,a=%d,b=%d'%(a,b))
a+b+1 #lambda表达式只能一行代码
,
lambda a,b,c:a+b+c
]
print(list(m1[2]))
'''
输出如下
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
'''
n=m1[3](2,3) #
print('n=%d'%(n))
'''
输出如下
fun1=fun1,a=2,b=3
n=5
'''
#将上面2行代码合成1行
print('m1[3](2,3)=%d'%(m1[3](2,3)))
'''
输出如下,与上面相同
fun1=fun1,a=2,b=3
n=5
'''
print('m1[4](2,3)=%d'%(m1[4](2,3)))
'''
输出如下,与上面相同
m1[4](2,3)=6
'''
print('m1[5](2,3,3)=%d'%(m1[5](2,3,3)))
'''
输出如下,与上面相同
m1[5](2,3,3)=8
'''
#用词典dict参数表示lambda函数
class Test1:
def fun(self,a,b):
print('Test1,id(self)=%d,a=%d,b=%d'%(id(self),a,b))
return a+b