Python函数参数报错:非默认参数尾随默认参数如何解决?
解决Python函数非默认参数不能在默认参数后的问题
这是Python的语法硬性限制,和类型提示无关——Python不允许没有默认值的参数出现在带默认值的参数后面,因为这样会让解释器无法判断你传入的位置参数到底是给前面的默认参数赋值,还是给后面的非默认参数使用的。
有两种常用的解决办法:
调整参数顺序:把不带默认值的参数移到默认参数前面,这是最直观的方案:
def function1(self, a: int, c: int, b: int = 0):用
*分隔参数:在默认参数和非默认参数之间加一个*,强制后面的非默认参数必须通过关键字传递,这样就避免了歧义:def function1(self, a: int, b: int = 0, *, c: int):调用的时候必须指定
c的参数名,示例如下:# 两种合法调用方式 obj.function1(1, c=2) obj.function1(1, 5, c=2)
内容的提问来源于stack exchange,提问作者String
相关产品推荐
相关产品推荐

