在使用一些内置函数(如sorted,sum)时,我注意到 key=lambda
key=lambda
什么是lambda?它是如何工作的?
还有哪些其他功能使用key = lambda?
还有其他关键值吗? key=?
key=?
Alambda是一个匿名函数:
lambda
>>> f = lambda: 'foo' >>> print f() foo
它经常用在诸如以sorted()callable作为参数(通常是key关键字形参)的函数中。您可以提供一个现有的函数,而不是lambda那里的函数,只要它是一个可调用的对象即可。
sorted()
key
以sorted()功能为例。它将以排序顺序返回给定的iterable:
>>> sorted(['Some', 'words', 'sort', 'differently']) ['Some', 'differently', 'sort', 'words']
但这会将大写单词排在小写单词之前。使用key关键字,您可以更改每个条目,以便对其进行不同的排序。我们可以在排序之前将所有单词都小写,例如:
>>> def lowercased(word): return word.lower() ... >>> lowercased('Some') 'some' >>> sorted(['Some', 'words', 'sort', 'differently'], key=lowercased) ['differently', 'Some', 'sort', 'words']
为此,我们必须创建一个单独的函数,无法将def lowercased()行内联到sorted()表达式中:
def lowercased()
>>> sorted(['Some', 'words', 'sort', 'differently'], key=def lowercased(word): return word.lower()) File "<stdin>", line 1 sorted(['Some', 'words', 'sort', 'differently'], key=def lowercased(word): return word.lower()) ^ SyntaxError: invalid syntax
甲lambda在另一方面,可以直接指定,内嵌在sorted()表达式:
>>> sorted(['Some', 'words', 'sort', 'differently'], key=lambda word: word.lower()) ['differently', 'Some', 'sort', 'words']
Lambda仅限于一个表达式,其结果是返回值。
Python库中有很多地方,包括内置函数,这些地方都带有可调用的关键字或位置参数。这里要说的太多了,它们通常扮演着不同的角色。