您是否可以在sorted()中定义一个命名函数?

时间:2019-07-16 19:57:16

标签: python sorting

我正在尝试在sorted()函数的'key'参数中定义一个函数。

我可以通过使用lambda函数来使其工作,但是我想知道是否可以拆分代码以提高可读性(以便将其分布在多行中),以便在键中添加定义的函数参数。


sorted_contacts = sorted(contacts_array, key= def d(x):
        #...do something here 
);

SyntaxError:语法无效 Sorted_contacts =已排序(contacts_array,key = def d(x):                                                     ^

1 个答案:

答案 0 :(得分:3)

这在Python中是不可能的。命名函数为语句,函数自变量必须为表达式

最接近的是lambda函数,但只能包含一行代码。

要解决您的问题,您可以在调用之外定义函数,然后对其进行引用:

def d(x):
    ...
    return ...

sorted_contacts = sorted(contacts_array, key=d)

这是由于以下事实:在Python中,函数是一流对象,这意味着它们可以在表达式中使用,就像其他任何对象(整数,字符串,类实例等)一样。 )