关于Python与switch case

Home

关于Python与switch case

寻找更好的编程模式

Directory

This document is not completed and will be updated anytime.

Python的设计哲学是“简单”,和其它语言不太一样的地方之一是:没有switch case语句

带来的问题是,当我们遇到多条件判断的时候只能用if去判断,一堆if,一堆丑代码,这和“简单”的设计哲学相悖。

    if somthing == 'left':
        if somthing == 'right':
            if somthing == 'middle':
                ...

事实上有更好的编程模式去避开这种看着胸口疼的代码 —— 表驱动法。

当需要多次逻辑判断的时候,应该考虑构建条件映射去解决switch类似的结构:

    def numbers_to_strings(argument):
        switcher = {
            0: "zero",
            1: "one",
            2: "two",
        }

        return switcher.get(argument, "nothing")

上面的写法等价于switch语句:

function(argument){
    switch(argument) {
        case 0:
            return "zero";
        case 1:
            return "one";
        case 2:
            return "two";
        default:
            return "nothing";
    };
};

在遇到多条件判断的时候,pythonic的做法是将通过各种逻辑语句去判断的条件,构建成映射表,这样的做法可以使代码更加结构化,也易于调试bug。