if/else语句的Pythonic替代品

sir*_*von 4 python optimization if-statement data-structures

我试图避免使用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....
Run Code Online (Sandbox Code Playgroud)

无论如何都要避免这种做法...如果xyz网站做funcA,如果xyz网站做funcB.

我想用它作为一个真实世界的课程来学习我的python代码的一些高级结构.所以请随时指导我学习Python或编程的基本知识.

Mar*_*ers 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)
Run Code Online (Sandbox Code Playgroud)

Python函数是第一类对象,可以像任何其他对象一样作为值存储在字典中.