python lambdas的语法更改。
lambdazen的Python项目详细描述
这是什么?
更好的python lambda语法满足匿名函数的需要。
写入a = (x) > x,而不是a = lambda x: x。见下文 语法注意事项。
立即开始:pip install lambdazen
fromlambdazenimportzendefotherfunc(*args):printsum(args)# The zen decorator allows you to define lambdas with a better syntax@zendefexample():example.epic=(x,y,z)>otherfunc(x,y,z)# Multiline lambdas are a tuple or list of statements# The assignment operator inside is << instead of =# The last statement is the return valueexample.multiline=(x,y,z)>(s<<otherfunc(x,y,z),s)# Call function so the lambdas are bound to function attributesexample()example.epic(1,2,3)>>>6example.multiline(1,2,3)>>>6
注意事项
- 更好的lambda只能在具有^{tt4}的函数中定义$ 属性
- 此函数中的任何其他代码都将被执行,最好使用 作为lambdas容器的函数
它是如何工作的
tldr;运行时内存中源重写和重新编译
其他示例
fromlambdazenimportzen# Lambdas don't need to be bound to the function@zendefnormalizeString(nS):transforms=[(s)>s.strip(),(s)>s.lower(),(s)>s.replace(' ','_')]apply_all=(transforms_list,s)>(is_done<<(len(transforms_list)==0),current_transform<<transforms_list[0]ifnotis_doneelseNone,remaining_transforms<<transforms_list[1:]ifnotis_doneelseNone,current_transform(apply_all(remaining_transforms,s))ifnotis_doneelses)returnapply_all(transforms,nS)normalizeString("Abraham Lincoln")>>>"abraham_lincoln"