我正在尝试避免复杂的if / elif / else语句。
我可以用什么pythonic方法来实现我的目标。
这就是我想要实现的目标:
我的脚本将收到大量不同的网址,
youtube.com,hulu.com,netflix.com,instagram.com,imgur.com等可能有1000个不同的域名。
我将为每个不同的站点调用一组函数/一组不同的指令。
左右....
if urlParsed.netloc == "www.youtube.com":
youtube()
if urlParsed.netloc == "hulu.com":
hulu()
and so on for 100s of lines....
无论如何都要避免这种做法...如果xyz网站执行funcA,如果xyz网站执行funcB。
我想用这个作为真实世界的课程来学习我的python代码的一些高级结构。 因此,请随时指导我学习Python或编程的基本知识。
答案 0 :(得分:12)
使用调度字典映射域来运行:
def default_handler(parsed_url):
pass
def youtube_handler(parsed_url):
pass
def hulu_handler(parsed_url):
pass
handlers = {
'www.youtube.com': youtube_handler,
'hulu.com': hulu_handler,
}
handler = handlers.get(urlParsed.netloc, default_handler)
handler(urlParsed)
Python函数是第一类对象,可以像任何其他对象一样作为值存储在字典中。
答案 1 :(得分:4)
您可以使用dict
myDict = {"www.youtube.com": youtube, "hulu.com": hulu}
...
...
if urlParsed.netloc in myDict:
myDict[urlParsed.netloc]()
else:
print "Unknown URL"