43. Lambda是什么?

Lambda是一个表达式,创建了一个匿名函数。在一行语句内返回一个表达式, 类似一个简单函数, 形式如下:

lambda_expr  ::=  "lambda" [parameter_list]: expression

功能和以下函数类似:

::
def <lambda>(arguments):

return expression

lambda函数经常作为参数传递给其他函数的场景,例如python的内置uuid模块使用了多个 lambda函数作为参数传递给_find_mac函数的第四个参数,我们不用每次去定义这个函数, 直接通过这个lambda语句来定义一个函数并赋值给_find_mac的函数参数变量中,这样可以 简化代码:

def _lanscan_getnode():
    """Get the hardware address on Unix by running lanscan."""
    # This might work on HP-UX.
    return _find_mac('lanscan', '-ai', [b'lan0'], lambda i: 0)

代码在python的安装目录的lib/uuid.py中,也可以参考以下链接

http://openwrt.bjbook.net/source/xref/python-3.6.5/Lib/uuid.py