日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中case的用法_python中Switch/Case实现的示例代码

發布時間:2024/4/13 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中case的用法_python中Switch/Case实现的示例代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python 的 python中Switch/Case實現的示例代碼

學習Python過程中,發現沒有switch-case,過去寫C習慣用Switch/Case語句,官方文檔說通過if-elif實現。所以不妨自己來實現Switch/Case功能。

使用if…elif…elif…else 實現switch/case

可以使用if…elif…elif..else序列來代替switch/case語句,這是大家最容易想到的辦法。但是隨著分支的增多和修改的頻繁,這種代替方式并不很好調試和維護。

方法一

通過字典實現

def foo(var):

return {

'a': 1,

'b': 2,

'c': 3,

}.get(var,'error') #'error'為默認返回值,可自設置

方法二

通過匿名函數實現

def foo(var,x):

return {

'a': lambda x: x+1,

'b': lambda x: x+2,

'c': lambda x: x+3,

}[var](x)

方法三

通過定義類實現

參考通過類來實現Swich-case

# 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

# break is used here to look as much like the real thing as possible, but

# elif is generally just as good and more concise.

# Empty suites are considered syntax errors, so intentional fall-throughs

# should contain 'pass'

c = 'z'

for case in switch(c):

if case('a'): pass # only necessary if the rest of the suite is empty

if case('b'): pass

# ...

if case('y'): pass

if case('z'):

print "c is lowercase!"

break

if case('A'): pass

# ...

if case('Z'):

print "c is uppercase!"

break

if case(): # default

print "I dunno what c was!"

# As suggested by Pierre Quentel, you can even expand upon the

# functionality of the classic 'case' statement by matching multiple

# cases in a single shot. This greatly benefits operations such as the

# uppercase/lowercase example above:

import string

c = 'A'

for case in switch(c):

if case(*string.lowercase): # note the * for unpacking as arguments

print "c is lowercase!"

break

if case(*string.uppercase):

print "c is uppercase!"

break

if case('!', '?', '.'): # normal argument passing style also applies

print "c is a sentence terminator!"

break

if case(): # default

print "I dunno what c was!"

# Since Pierre's suggestion is backward-compatible with the original recipe,

# I have made the necessary modification to allow for the above usage.

查看Python官方:PEP 3103-A Switch/Case Statement

發現其實實現Switch Case需要被判斷的變量是可哈希的和可比較的,這與Python倡導的靈活性有沖突。在實現上,優化不好做,可能到最后最差的情況匯編出來跟If Else組是一樣的。所以Python沒有支持。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的python中case的用法_python中Switch/Case实现的示例代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。