Python sorted()函数报错:预期1个参数却传入3个,求解析
Python 3.9中sorted()函数传参报错的原因解析
你遇到的TypeError: sorted expected 1 argument, got 3错误,核心原因是sorted()的key和reverse参数必须以关键字参数形式传递,不能通过位置顺序传入。
函数参数规则说明
Python中sorted()函数的官方定义为:
sorted(iterable, *, key=None, reverse=False)
这里的*是参数分隔符,它明确表示:*之后的所有参数(也就是key和reverse)只能作为关键字参数传入,不接受位置参数传递。
两种写法的对比
正确写法:
sorted(circus, key = lambda d: d[4], reverse = True)这里
key和reverse都以关键字参数的形式传递,完全符合函数的参数定义要求,因此可以正常执行。错误写法:
sorted(circus, lambda z: z[4], True)你将
lambda z: z[4]和True作为位置参数传递,但sorted()在第一个位置参数iterable之后,不接受任何额外的位置参数,因此函数会认为你传入了3个位置参数,超出了它的预期,从而抛出报错。
这种参数设计是Python为了避免参数歧义、提升代码可读性而做的规定,确保后续即使函数更新,也不会因为参数位置变化导致旧代码出错。
内容的提问来源于stack exchange,提问作者Many Questions
相关产品推荐
相关产品推荐

