#定义函数
def sum(a,b):
return a+b
#调用
sum(3,5)
# 打印结果
print(sum(3, 5)) # 结果:8
用匿名函数怎样来实现同样的效果呢?
# 创建函数
lambda a, b: a+b
# 传入参数运算
(lambda a, b: a+b)(3, 5)
# 打印结果
print((lambda a, b: a+b)(3, 5)) #结果:8
打印看一下,显示都是函数,一个是叫sum的函数,另外一个就是lambda的匿名函数。
匿名函数如果赋值给一个变量,那么这个变量就可以当做函数调用了。这样就变成了之前定义的函数了。
那如何给匿名函数传递带有默认值的参数呢
看完上面的介绍之后,有没有觉得对匿名函数很亲切了。
知道匿名函数有什么用呢,看上去好像更麻烦了,没有之前的定义函数的方式好理解。
既然存在这样的一个匿名函数,肯定是有它的一个用途的。那什么时候用匿名函数呢?
例子:
有一个liststr = ["1", "2", "3", "4", "5", "6"]列表,需要把它变成listint = [1,4,9,16,25,36]。
#方法-1
list_str = ["1", "2", "3", "4", "5", "6"]
list_int = []
for i in list_str:
item = int(i)*int(i)
list_int.append(item)
print(list_int)
# 方法-2
list_str = ["1", "2", "3", "4", "5", "6"]
list_int = list(map(lambda x: int(x)*int(x), list_str))
print(list_int)
解释:
map()函数接收两个参数,一个是函数,一个是Iterable(可迭代对象),map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回,详细用法后面的课程会讲到。 通过对比,发现使用匿名函数非常简单,当然匿名函数的作用远非如此,下面做个简单的总结。
1.当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。 2.匿名函数只有在调用时,才会创建函数对象和作用域对象。调用完后立即释放,节省内存。适合做回调函数,之后的一个计算器的案例就会有具体讲到。 3.同时用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。