python lambda表达式,类似于之前熟悉的C++表达式:形式如下:
sum = lambda arg1, arg2: arg1 + arg2
compare = labmda n1,n2:n1<n2
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
补充python3中list中的sort函数,在python3中取消了cmp关键字,统一用key实现比较函数或者是其他关键函数的定义,其中key应通过functools.cmp_to_key来实现转换,例如
compare=lambda:x,y:1 if x<y eles -1 nums.sort(key = functools.cmp_to_key)
其中functools.cmp_to_key中x表示数组的后者,y表示数组的前者,表达式返回值,若大于0,不做改变,若小于0,则交换位置
即如上述代码所示,实现降序排列。(类似于C++中的priority_queue定义与通常理解相反)