为什么 lambda 函数不接受与 sorted() 绑定的参数

Why doesn't lambda function accept parameter in bond with sorted()

Students = (("Squidward", "F", 60),
            ("Sandy", "A", 33),
            ("Patrick","D", 36),
            ("Spongebob","B", 20),
            ("Mr.Krabs","C", 78))

sort_grades = lambda grades: grades[1]

Sorted_Students = sorted(Students,key=sort_grades)

lambda 函数有一个 参数等级 。为什么我们不将 Sorted_Students 中的任何参数作为 key= 传递,这样 [ 之后就没有括号 =22=]。即使没有将任何参数作为“等级”传递,这段代码也能以某种方式工作,所以我们甚至没有 运行 lambda 函数(没有参数怎么办 - 不可能)。请详细说明这段代码是如何最明确地工作的,这样我愚蠢的大脑可以从你的评论中得到一些东西

sortedkey 参数是一个将应用于元素以便将它们相互比较的函数。 因此,我们只传递函数本身而不调用它。

我建议你下次先阅读文档:) https://docs.python.org/3/library/functions.html#sorted

完成, functions in python might be passed as argument just as any object. An other function from the python standard library that uses this feature is map()。这个函数接受一个可迭代对象和一个函数,以及 return 一个函数结果的生成器,该函数的结果应用于可迭代对象的每个元素。实现方式:

def map(iterable, f): # Note : f is a function!
    return (f(i) for i in iterable) # and is indeed called

并且可以这样使用:

print(list(map([1,2,3,4,5], lambda x: x*x))) #we convert the generator to a list so it displays nicely
#it prints in the shell : [1,4,9,16,25]