PythonにおけるSwithch Case文法の実現
7951 ワード
http://blog.csdn.net/suiyunonghen/article/details/3734135
http://blog.csdn.net/longshengguoji/article/details/9918645
他の言語では、switch文は大体こんな感じです。
[python]view plin copy
ヽoo。ツ utf-8 from __future_. import ディヴィジョン def jia(x,y): print x+y def jian(x,y): print x-y def ching(x,y): print x*y def chu(x,y): print x/y operator = '+':jia'-':jian,'*':chng,':chu} def f(x,o,y): operator.get(o)(x,y) f(3,'+',2) 上のコードは辞書で選択機能を実現しました。C++の中で上記の機能を実現するなら、スイッチで実現しますが、pythonの辞書で実現するのがもっと簡単です。
http://blog.csdn.net/longshengguoji/article/details/9918645
他の言語では、switch文は大体こんな感じです。
- switch (var)
- {
- case value1: do_some_stuff1();
- case value2: do_some_stuff2();
- ...
- case valueN: do_some_stuffN();
- default: do_default_stuff();
- }
-
-
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
pythonではswitch文は使われていません。これはpython大道から簡に至る思想を体現しているべきです。pythonでは一般的に辞書を使ってswitchの代わりに実現します。[python]view plin copy
ヽoo。ツ utf-8