比如说,我有一个功能' artistsearch'在班级' Scraper()'这需要参数'网站','艺术家','关键字'和' rangenum',我想在脚本中多次使用此函数来获取不同的值。通常的做法是简单地重新分配变量,如下例所示,还是有更多pythonesque方式这样做?
# Set values for first instantiation
website="https://www.examplewebsitenumber1.com/"
artist="Da Vinci"
keyword="painting"
rangenum=7
# instantiate to object devinci
devinci=Scraper()
# run function
devinci.artistsearch(website, artist, keyword, rangenum)
# Set values for second instantiation
website="https://www.examplewebsitenumber2.com/"
artist="Gaudi"
keyword="sculpture"
rangenum=9
# instantiate to object gaudi
gaudi=Scraper()
# run function again with different values
gaudi.artistsearch(website, artist, keyword, rangenum)
and so on.........
答案 0 :(得分:2)
重用一个变量(你只是将名称重新分配给其他东西)是完全可以的,但在你的情况下,你似乎需要一个循环&要作为关键字参数传递的字典列表
arglist = [
{
website: "https://www.examplewebsitenumber1.com/",
artist: "Da Vinci",
keyword: "painting",
rangenum: 7
}, {
website:"https://www.examplewebsitenumber2.com/",
artist: "Gaudi",
keyword: "sculpture",
rangenum: 9
}
]
for args in arglist:
devinci = Scraper()
devinci.artistsearch(**args)
作为参数传递的 **args
与解压缩当前字典相同。例如:
devinci.artistsearch(
website="https://www.examplewebsitenumber2.com/",
artist="Gaudi",
keyword="sculpture",
rangenum=9
)
我当然不确定artistsearch
中的参数名称,但是你得到了这个想法(最坏的情况是,创建一个列表而不是传递参数作为位置,artistsearch(*args)
在这种情况下)
答案 1 :(得分:0)
我建议列出list
。
to_scrape = [["https://www.examplewebsitenumber1.com/", "Da Vinci", ..], ["https://www.examplewebsitenumber2.com/", ..]]
instance=Scraper() #if you need define this inside for loop.
for i in to_scrape:
instance.artistsearch(*i)