python - Python TypeError: sort() 没有位置参数
问题描述
我尝试写一个小班,并想根据重量对项目进行排序。提供代码,
class Bird:
def __init__(self, weight):
# __weight for the private variable
self.__weight = weight
def weight(self):
return self.__weight
def __repr__(self):
return "Bird, weight = " + str(self.__weight)
if __name__ == '__main__':
# Create a list of Bird objects.
birds = []
birds.append(Bird(10))
birds.append(Bird(5))
birds.append(Bird(200))
# Sort the birds by their weights.
birds.sort(lambda b: b.weight())
# Display sorted birds.
for b in birds:
print(b)
当我运行程序时,我得到Python TypeError: sort() takes no positional arguments
. 这里有什么问题?
解决方案
正是它所说的:sort
不接受任何位置参数。它接受一个名为 的仅限关键字的参数key
:
birds.sort(key=lambda b: b.weight())
从文档中:
排序(*,键=无,反向=假)
此方法仅使用
<
项目之间的比较对列表进行排序。异常不会被抑制 - 如果任何比较操作失败,整个排序操作将失败(并且列表可能会处于部分修改状态)。
sort()
接受两个只能通过关键字传递的参数 (仅关键字参数):key指定一个参数的函数,用于从每个列表元素中提取比较键(例如,
key=str.lower
)。列表中每一项对应的键计算一次,然后用于整个排序过程。默认值None
表示列表项直接排序,不计算单独的键值。[...]
签名中的*
是位置参数和仅关键字参数之间的分隔符;它作为初始“参数”的位置表明缺少位置参数。
推荐阅读
- java - 如何在从网页获取报告时修复抛出的 IllegalStateException
- ssh - Ngrok SSH 连接被远程主机关闭
- node.js - 当 props.match.params.id 返回 undefined 但 id 在 url 上可见时,如何获取 url 的 id 参数?
- c - 在 C 中使用指针数组失败
- java - springfox-swagger-ui 2.9.2 不显示 swagger-ui.html 页面返回 404
- java - 解锁企业网络中的防火墙以访问 Google 文本到语音 API 需要什么 URL?
- javascript - 如何在 NodeJS 中从文本文件中读取特殊字符
- swift - Custom InfoWindow for google maps - Unable to set y position
- python - Finding the exact name of City and Country
- visual-studio - 使用 CSV 文件更改 Web 测试的 URL