课程
您可以使用 def 关键字、函数头、文档字符串和函数体来编写自定义的 Python 函数。不过,还有一种更快的即写即用方式,称为 lambda 函数,因为它使用关键字 lambda。
有些函数定义足够简单,可以转换为 lambda 函数。这样做可以减少代码行数,非常棒,尤其是在编写和维护大型程序时格外实用。
lambda 函数
这里我们将函数 raise_to_power 重写为一个 lambda 函数。在关键字 lambda 之后,先指定参数名;然后使用冒号,后面跟要返回的表达式。
raise_to_power = lambda x, y: x ** y
raise_to_power(2, 3)
8
如前所述,lambda 函数让您可以快速而“简洁粗犷”地写函数,因此我们并不建议始终使用它们,但在某些场景下非常好用,比如下面的例子。
map() 与 lambda 函数
map 函数接收两个参数:一个函数和一个序列(如列表),并将该函数应用到序列的所有元素上。我们可以将 lambda 函数传给 map,甚至无需给它命名,这种情况下它们被称为匿名函数。
在这个示例中,我们将 map() 用于一个 lambda 函数,以对列表的所有元素求平方,并将结果保存到 square_all 中。
nums = [48, 6, 9, 21, 1]
square_all = map(lambda num: num ** 2, nums)
print(square_all)
<map object at 0x103e065c0>
打印 square_all 会发现它是一个 map 对象。要查看其返回的内容,我们将其转换为列表并打印结果。
print(list(square_all))
[2304, 36, 81, 441, 1]
交互式示例:编写一个 lambda 函数
下面的函数 echo_word 接受两个参数:字符串 word1 和整数 echo。它返回一个字符串,即将 word1 复制 echo 次后拼接得到的结果。
您将把上述这个简单函数转换为一个 lambda 函数。
def echo_word(word1, echo):
"""Concatenate echo copies of word1."""
words = word1 * echo
return words
在下面的示例中,您将:
- 使用变量
word1和echo定义一个 lambda 函数echo_word。复现上面echo_word()的原始函数定义所做的事情。 - 按顺序用字符串参数
'hey'和数值5调用echo_word()。将调用结果赋给result。最后,打印变量result。
# Define echo_word as a lambda function: echo_word
echo_word = (lambda word1, echo: word1 * echo)
# Call echo_word: result
result = echo_word('hey', 5)
# Print result
print(result)
当我们运行上述代码时,将产生以下结果:
heyheyheyheyhey
想进一步了解 Lambda 函数,请观看我们课程 Python Data Science Toolbox(第 1 部分) 中的这段视频。
本内容摘自 DataCamp 由 Hugo Bowne-Anderson 授课的 Python Data Science Toolbox(第 1 部分) 课程。
查看 DataCamp 的 Python 函数教程。