zoukankan      html  css  js  c++  java
  • Python中Swithch Case语法实现

    而python本身没有switch语句,解决方法有以下3种:
    A.使用dictionary
    values = {
    value1: do_some_stuff1,
    value2: do_some_stuff2,
    ...
    valueN: do_some_stuffN,
    }
    values.get(var, do_default_stuff)()

    B.使用lambda
    result = {
    'a': lambda x: x * 5,
    'b': lambda x: x + 7,
    'c': lambda x: x - 2
    }[value](x)


    C.Brian Beck提供了一个类 switch 来实现其他语言中switch的功能
    # This class provides the functionality we want. You only need to look at
    # this if you want to know how this works. It only needs to be defined
    # once, no need to muck around with its internals.
    class switch(object):
        def __init__(self, value):
            self.value = value
            self.fall = False
        def __iter__(self):
            """Return the match method once, then stop"""
            yield self.match
            raise StopIteration
        def match(self, *args):
            """Indicate whether or not to enter a case suite"""
            if self.fall or not args:
                return True
            elif self.value in args: # changed for v1.5, see below
                self.fall = True
                return True
            else:
                return False
    # The following example is pretty much the exact use-case of a dictionary,
    # but is included for its simplicity. Note that you can include statements
    # in each suite.
    v = 'ten'
    for case in switch(v):
        if case('one'):
            print 1
            break
        if case('two'):
            print 2
            break
        if case('ten'):
            print 10
            break
        if case('eleven'):
            print 11
            break
        if case(): # default, could also just omit condition or 'if True'
            print "something else!"
            # No need to break here, it'll stop anyway
    

      

    
    
  • 相关阅读:
    Go语言中DateTime知识点
    Go语言中的string知识点
    Go语言中的Iota
    Go语言的通道(2)-缓冲通道
    Go语言的通道(1)-无缓冲通道
    Go语言协程
    设计一个好的通用组件
    Windows服务器【由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作】问题调查
    Go语言的并发
    SCSS 中的 &::before 和 &::after
  • 原文地址:https://www.cnblogs.com/jsplyy/p/5636358.html
Copyright © 2011-2022 走看看