python - 你能在 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): ^
解决方案
这在 Python 中是不可能的。命名函数是语句,函数参数必须是表达式。
最接近的是 lambda 函数,但它只能有一行代码。
要解决您的问题,您可以在调用之外定义函数,然后引用它:
def d(x):
...
return ...
sorted_contacts = sorted(contacts_array, key=d)
这是因为在 Python 中,函数是一等对象,这意味着它们可以像任何其他对象(整数、字符串、类实例等)一样在表达式中使用。
推荐阅读
- python - 打印表达式并回显它
- r - 如何用一列csv数据制作热图
- ruby-on-rails - Ruby on Rails - ActiveStorage
- firefox - Sendkeys 仅使用量角器将部分信息传递到 Firefox 浏览器中的输入框
- swift - 使用 presentController 更改视图后不能使用基于页面的导航?
- java - 如何覆盖按钮显示主页
- jboss7.x - ArchiveDescriptor 重用;可以多次处理 URL 吗?
- javascript - 如何根据内容高度重置画布对象高度?
- angularjs - 如何使用 webpack 包含 node_modules?
- hyperledger-fabric - 如何在用户应用程序中获取通知?