马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Python FAQ 040 代码没有语法问题但报 SyntaxError
问题
我下面的代码没有语法问题,也没有缩进错误,为什么会报 SyntaxError: non-default argument follows default argument 语法错误?
def add(a=1, b):
return a + b
print('1 + 3 =', add(a=1, b=3))
解答
在 Python 中定义函数时,位置参数必须在默认参数的前面,否则会报错。对于这种问题主要有 3 种解决方法:
- 将参数 a 移到参数 b 的后面:
def add(b, a=1):
return a + b
print('1 + 3 =', add(a=1, b=3))
- 将默认参数 a 变为位置参数(去掉默认值):
def add(a, b):
return a + b
print('1 + 3 =', add(a=1, b=3))
- 将位置参数 b 变为默认参数(加上默认值):
def add(a=1, b=5):
return a + b
print('1 + 3 =', add(a=1, b=3))
|