如何修复:语法错误:位置参数跟随关键字参数
您在 Python 中可能遇到的错误是:
SyntaxError : positional argument follows keyword argument
当您在使用关键字参数之后在函数中使用位置参数时,会出现此错误。
这是两者之间的区别:
位置参数是那些前面没有“关键字”的参数。
- 示例: my_function(2, 2)
关键字参数是那些前面有“关键字”的参数。
- 示例: my_function(a=2, b=2)
如果在关键字参数后使用位置参数,Python 将抛出错误。
- 示例: my_function(a=2, 2)
以下示例显示了实际中如何发生此错误。
示例:位置参数跟随关键字参数
假设我们在 Python 中有以下函数,将两个值相乘,然后除以第三个值:
def do_stuff (a,b):
return a*b/c
以下示例显示了使用此函数的有效和无效方法:
有效方法#1:所有位置参数
以下代码展示了如何将我们的函数与所有位置参数一起使用:
do_stuff ( 4,10,5 )
8.0
不会生成任何错误,因为 Python 确切地知道每个函数参数使用什么值。
有效方法#2:所有关键字参数
以下代码展示了如何将我们的函数与所有关键字参数一起使用:
do_stuff(a= 4 , b= 10 , c= 5 )
8.0
同样,不会抛出任何错误,因为 Python 确切地知道每个函数参数使用什么值。
有效方法#3:关键字参数之前的位置参数
以下代码展示了如何将我们的函数与关键字参数之前使用的位置参数一起使用:
do_stuff( 4 ,b= 10 ,c= 5 )
8.0
不会生成错误,因为 Python 知道应该将值4分配给参数。
无效方式:关键字参数后面的位置参数
以下代码显示了我们如何尝试使用在关键字参数之后使用位置参数的函数:
do_stuff(a= 4 , 10 , 5 )
SyntaxError : positional argument follows keyword argument
抛出错误是因为我们在关键字参数之后使用了位置参数。
具体来说,Python 不知道值10和5应该分配给参数b还是c ,因此无法执行该函数。
其他资源
以下教程解释了如何修复 Python 中的其他常见错误:
如何修复 Pandas 中的 KeyError
如何修复:ValueError:无法将 float NaN 转换为 int
如何修复:ValueError:操作数无法与形状一起广播