python 匿名函数 lambda

来源:互联网 发布:袜子属于淘宝哪个类目 编辑:程序博客网 时间:2024/05/21 17:37
#lambda表达式形式:lambda arguments1,arguments2,...argumentsN:expression using argumentsf=lambda x,y,z:x+y+zprint(f(2,3,4))     #9#默认参数也能够在lambda参数中使用,就像在def中使用中一样x=(lambda a='fee',b='fie',c='foe':a+b+c)print(x())      #feefiefoedef knights():    title='sir'    action=(lambda x:title+' '+x)    return actiona=knights()print(a('name'))     #sir name#lambda起到了一种函数速写的作用,允许在使用的代码内嵌入一个函数的定义,当需要小段执行代码编写进def语句从语法上不能编写进的地方时,#lambda表达式作为def的一种速写来说是最为有用的l=[lambda x:x**2, lambda x:x**3, lambda x:x**4]for f in l:    print(f(2))     #4  8  16key='got'result={'already':(lambda :2+2),'got':(lambda :2*4),'one':(lambda :2**6)}[key]()print(result)    #8lower=(lambda x,y:x if x<y else y)print(lower('bb','aa'))     #aaprint(lower('aa','bb'))     #aaimport sysshowall=lambda x:list(map(sys.stdout.write,x))showall(['a','b','c'])    #abcshowall1=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))    #3action1=(lambda x:lambda y:x+y)a=action1(11)print(a(22))    #33#常用于回调处理器def onPress(s):    print(s)import sysfrom 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()
原创粉丝点击