Python-在脚本中多次重新分配对象变量 - 良好实践?

时间:2017-09-25 09:16:21

标签: python python-3.x function class

比如说,我有一个功能' 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.........

2 个答案:

答案 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)