我想接受一个带有等号的参数:
my_nintendo_news = Website('https://mynintendonews.com', href = re.compile('https://mynintendonews.com/2018/'), "C:/Users/charl/Pictures/toad_small_60x60.png", "C:/Users/charl/Pictures/toad_small_60x60_bw.png" )
但我一直在
SyntaxError: positional argument follows keyword argument
我该如何避免这种情况?我需要使用
href = re.compile('https://mynintendonews.com/2018/')
作为另一个函数的参数,我不能把它作为一个字符串(我听说使用eval()是坏的吗?)
答案 0 :(得分:1)
您需要在最后传递可选参数,并在开始时传递必需的参数。
在这种情况下,我认为 href 将是必需的参数,所以这里如果你想传递参数名称(在你的情况下是href),那么你需要传递所有带有名字的参数而不是其中一个像“href ='example.com'”“
例如。
def test_method(a, b, c, d=0, e=0):
return a + b + c + d + e
对于上述方法 test_method ,您无法将此函数称为 test_method(1,b = 2,3),您需要将其称为 test_method (1,2,3)或 test_method(a = 1,b = 2,c = 3)
但由于“ e ”参数是可选参数,您可以将其称为 test_method(1,2,3,e = 5)而不必担心 d 强>
答案 1 :(得分:0)
查看实际的错误消息:
SyntaxError: positional argument follows keyword argument
您正在调用Website
并传递位置参数,后跟关键字参数,后跟两个位置参数。 Python不允许这样做。有关位置和关键字参数的解释,请查看Python Glossary。
您需要做的是,用关键字参数替换所有位置参数或删除所有关键字参数(在您的情况下:href=
)。
我不熟悉你正在使用的代码,所以我会编写一些关键字参数。仅使用关键字参数就是这种情况:
my_nintendo_news = Website(url='https://mynintendonews.com', href=re.compile('https://mynintendonews.com/2018/'), path1="C:/Users/charl/Pictures/toad_small_60x60.png", path2="C:/Users/charl/Pictures/toad_small_60x60_bw.png")
你还可以做的是:
my_nintendo_news = Website(url='https://mynintendonews.com', href=re.compile('https://mynintendonews.com/2018/'), "C:/Users/charl/Pictures/toad_small_60x60.png", "C:/Users/charl/Pictures/toad_small_60x60_bw.png")
这里最后一个关键字参数href
后跟两个位置参数。