huashengzi 发表于 2020-4-12 22:41:34

Max 函数的key的原理

关于max,min函数的key的用法
举下面的例子
min(,,,,,(7,2),key=lambda x:x)
这个为什么不能直接写作下面的样子,
min(,,,,,(7,2),key=x)

既然x是直接被传入的,那么直接写作第二种为什么不行呢?

永恒的蓝色梦想 发表于 2020-4-12 23:20:47

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

陈尚涵 发表于 2020-4-13 13:34:49

lambda是一个函数,把这个函数对象传给key中,而x是一个值,并不是一个函数的对象。
页: [1]
查看完整版本: Max 函数的key的原理