Max 函数的key的原理
关于max,min函数的key的用法举下面的例子
min(,,,,,(7,2),key=lambda x:x)
这个为什么不能直接写作下面的样子,
min(,,,,,(7,2),key=x)
既然x是直接被传入的,那么直接写作第二种为什么不行呢?
x是一个值,lambda x:x是一个函数
_no_arg=object()
def max(iterable,/,*vars,key=None,default=_no_arg):
if vars:
if default is _no_arg:
greatest=iterable
else:
raise TypeError("Cannot specify a default for max() with multiple positional arguments")
else:
vars=iter(iterable)
try:
greatest=next(vars)
except StopIteration:
if default is None:
raise ValueError("max() arg is an empty sequence")
else:
return default
if key is None:
for var in vars:
if var>greatest:
greatest=var
else:
flag=key(greatest)
for var in vars:
temp=key(var)
if temp>flag:
flag=temp
greatest=var
return greatest lambda是一个函数,把这个函数对象传给key中,而x是一个值,并不是一个函数的对象。
页:
[1]