伊夫利夫·克劳斯的替代品

2024-04-26 05:14:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个脚本从booru imageboards下载。如果elif子句看起来更简单,那么有没有其他方法可以让这个难看点,以防我想添加更多booru imageboard选项?谢谢。在

def runbooru(tags, limit=0, booru="Danbooru"):
    tag = Danbooru(tags, limit)
    if booru == "Danbooru":
        tag = Danbooru(tags, limit)
    elif booru == "Gelbooru":
        tag = Gelbooru(tags, limit)
    elif booru == "Rule34":
        tag = Rule34(tags, limit)
    elif booru == "Konachan":
        tag = Konachan(tags, limit)
    elif booru == "Yandere":
        tag = Yandere(tags, limit)
    elif booru == "Safebooru":
        tag = Safebooru(tags, limit)
    return tag

Tags: 方法脚本tagtagslimitbooruelif子句
1条回答
网友
1楼 · 发布于 2024-04-26 05:14:06

使用字典:

processors = {f.__name__: f for f in (
    Danbooru, Gelbooru, Konachan, Yandere, Safebooru)}
if booru in processors:
    tag = processors[booru](tags, limit)

函数也是对象,您可以将它们存储在字典和列表等其他对象中。在

如果您的意思是Danbooru是默认值,那么您也可以在这里使用dict.get()

^{pr2}$

如果booru值不是字典中的键,则使用Danbooru函数。在

相关问题 更多 >