在Python中函数分为两种,一种是通过def定义的函数,一种是lambda定义的匿名函数。
lambda匿名函数适合定义一些单行语句的函数,可使代码更加简洁优美。但lambda函数局限性很大,通常我们只能定义一条单独的表达式,这个表达式的结果就是返回值。我们在匿名函数中无法使用多行语句、条件分支、异常处理。
我们不适用lambda函数也可以编写python函数完成我们的功能。但lambda有起到函数速写的作用,在仅需要一小段代码程序执行的情况下,可以带来优美简洁的代码结构。
# 什么是匿名函数,匿名函数如何定义呢?
# lambda 参数,参数... : 函数体
def my_add_function(a, b):
return a + b
# 对于一些短小函数,以上定义稍显复杂
# 是否有更简洁的定义函数方式呢?
my_add_lambda = lambda a, b: a + b
# 调用结果
ret1 = my_add_function(10, 20)
ret2 = my_add_lambda(10, 20)
print("ret1 = %d" % ret1)
print("ret2 = %d" % ret2)
匿名函数课堂练习:
students = [["John", 1001], ["Smith", 1006], ["Edward", 1004], ["Obama", 1002]]
print(students)
# 指定key排序
students.sort(key=lambda student: student[1])
print(students)
# 指定key排序
new_students = sorted(students, key=lambda student: student[1])
print(new_students)