python 匿名函数 lambda

本文详细介绍了Python中Lambda表达式的使用方法及应用场景,包括如何创建匿名函数、使用默认参数、构建跳转表等,并通过实例展示了其在实际编程中的灵活运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#lambda表达式创建了一个之后能够调用的函数,但是他返回了一个函数而不是将这个函数赋值给一个变量名,因此也叫匿名函数
#lambda表达式形式:lambda arguments1,arguments2,...argumentsN:expression using arguments
#lambda起到了一种函数速写的作用,允许在使用的代码内嵌入一个函数的定义,当需要小段执行代码编写进def语句从语法上不能编写进的地方时,lambda表达式作为def的一种速写来说是最为有用的


f=lambda x,y,z:x+y+z
print(f(2,3,4))     #9



#默认参数也能够在lambda参数中使用,就像在def中使用中一样
x=(lambda a='fee',b='fie',c='foe':a+b+c)
print(x())      #feefiefoe

#作用域查找方法和def函数相同
def knights():
    title='sir'
    action=(lambda x:title+' '+x)
    return action

a=knights()
print(a('name'))     #sir name

#lambda通常用来编写跳转表,也就是行为列表或者字典
l=[lambda x:x**2, lambda x:x**3, lambda x:x**4]
for f in l:
    print(f(2))     #4  8  16
    
#同上效果
def f1(x):return x**2
def f2(x):return x**3
def f3(x):return x**4
l=[f1,f2,f3]
for f in l:
    print(f(2))     #4  8  16

key='got'
result={'already':(lambda :2+2),'got':(lambda :2*4),'one':(lambda :2**6)}[key]()
print(result)    #8

#如果要在lambda表达式中添加逻辑,可以使用三元表达式
lower=(lambda x,y:x if x<y else y)
print(lower('bb','aa'))     #aa
print(lower('aa','bb'))     #aa

#lambda表达式中执行循环
import sys
showall=lambda x:list(map(sys.stdout.write,x))    
showall(['a','b','c'])    #abc

showall1=lambda x:[sys.stdout.write(i) for i in x]
showall1(['a','b','c'])     #abc

#嵌套lambda表达式和作用域
#lambda表达式能够获取任意上层lambda中的变量名
def action(x):
    return (lambda y: x+y)

l=action(1)
print(l(2))    #3

#lambda嵌套
action1=lambda x:lambda y:x+y
print(action1(1)(2))  #3

#常用于回调处理器
def onPress(s):
    print(s)

import sys
from tkinter import Button, mainloop
#x=Button(text='Press me', command=lambda :sys.stdout.write('spam\n'))
x=Button(text='Press me', command=lambda : onPress('aaaaaa'))
x.pack()
mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值