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

2024-10-04 07:39:00 发布

您现在位置: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()是不好的?)你知道吗


Tags: httpsrecompngmyargumentuserssmall
2条回答

查看实际的错误消息:

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后跟另外两个位置参数。你知道吗

您需要在末尾传递可选参数,在开头传递必需参数。你知道吗

在本例中,我认为href将是必需的参数,因此,如果您希望传递参数name(在您的例子中是href),那么您将需要传递所有参数name,而不是像“href=”这样的参数example.com网站“'”“

例如

def test_method(a, b, c, d=0, e=0):
    return a + b + c + d + e

对于上述方法,您不能将此函数称为测试方法(1,b=2,3),您需要将其称为测试方法(1,2,3)测试方法(a=1,b=2,c=3)

但由于“e”参数是可选参数,您可以将其称为test\u method(1,2,3,e=5),而不必考虑d的值。你知道吗

相关问题 更多 >