我制作了一个脚本从booru画板下载.是否有任何替代方法可以使这个丑陋的if-elif子句看起来更简单,以防我想添加更多的booru图像板选择?谢谢.
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
Run Code Online (Sandbox Code Playgroud)
使用字典:
processors = {f.__name__: f for f in (
Danbooru, Gelbooru, Konachan, Yandere, Safebooru)}
if booru in processors:
tag = processors[booru](tags, limit)
Run Code Online (Sandbox Code Playgroud)
函数也是对象,您可以将它们存储在其他对象中,如字典和列表.
如果你想Danbooru成为默认设置,你也可以dict.get()在这里使用:
processors = {f.__name__: f for f in (
Danbooru, Gelbooru, Konachan, Yandere, Safebooru)}
tag = processors.get(booru, Danbooru)(tags, limit)
Run Code Online (Sandbox Code Playgroud)
Danbooru如果booru值不是字典中的键,则使用该函数.
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |