首页 > 解决方案 > 你能在 sorted() 中定义一个命名函数吗?

问题描述

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

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


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

SyntaxError: 无效的语法 Sorted_contacts = sorted(contacts_array, key= def d(x): ^

标签: pythonsorting

解决方案


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

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

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

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

sorted_contacts = sorted(contacts_array, key=d)

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


推荐阅读