如何在python中的函数的参数中使用等号而不将其识别为引入关键字参数?

时间:2018-02-06 09:15:33

标签: python

我想接受一个带有等号的参数:

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()是坏的吗?)

2 个答案:

答案 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后跟两个位置参数。