Lambda Function¶
2024-01-10
Lambda 函数就是匿名函数,为了不给函数名的一次性临时函数准备的。用得最多的是将匿名函数作为参数传给另一个函数,例如正则表达示替换。
Syntax¶
x = lambda a : a + 10
print(x(5)) #= 15
x = lambda a, b : a * b
print(x(5, 6)) #= 30
函数记忆状态¶
下面的例子展示了嵌套调用。这种写法好像没什么实际用途啊?
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
print(mydoubler(11)) #= 22
上面的例子可以让函数 myfunc() 记住一个变量 2,这叫闭包。
Lambda 是和闭包紧密联系的。
函数作为参数¶
user login¶
这只是一个说明概念的示例玩具程序,演示用户在登陆时,登陆处理函数里面使用另一个被作为参数传入函数来完成处理。
def login(name, login_process):
if name in ["Tom", "Alice"]:
# 这里是一段和 login 相关的处理
# 部分处理过程要用到从外面传入的函数
message = 'Hello' + login_process(name)
print(message)
else:
print("Invalid user")
# 传入不同的函数,完成为完成不同的功能
login("Tom", lambda x : x.upper())
login("Tom", lambda x : x+x)
list sort¶
已知学生姓名与学号列表,请按学号排序
students = [(1, "zhang"), (2, "li"), (3, "wang")]
students.sort(key = lambda x: x[1])
如果不用匿名函数作为参数,那么等效的写法为:
def processing(x):
return x[1]
students.sort(key = processing)
sort() 内部会拿到 students 的每一个成员 x, 作为参数给被传进去的函数 key = processing
这种写法能实现给传进去的函数带两个参数吗? 无法从外部传参,因为参数是在 sort 内部传的。
正则替换¶
See : 正则表示式替换