我正在尝试在sorted()函数的'key'参数中定义一个函数。
我可以通过使用lambda函数来使其工作,但是我想知道是否可以拆分代码以提高可读性(以便将其分布在多行中),以便在键中添加定义的函数参数。
sorted_contacts = sorted(contacts_array, key= def d(x):
#...do something here
);
SyntaxError:语法无效 Sorted_contacts =已排序(contacts_array,key = def d(x): ^
答案 0 :(得分:3)
这在Python中是不可能的。命名函数为语句,函数自变量必须为表达式。
最接近的是lambda函数,但只能包含一行代码。
要解决您的问题,您可以在调用之外定义函数,然后对其进行引用:
def d(x):
...
return ...
sorted_contacts = sorted(contacts_array, key=d)
这是由于以下事实:在Python中,函数是一流对象,这意味着它们可以在表达式中使用,就像其他任何对象(整数,字符串,类实例等)一样。 )