点击上方“背锅侠Tester”,从陌生到恋爱的感觉~
听说看超哥的文章会上瘾
不要把工作当作生活的工具,把工作当生意做;
愿自己身体健健康康家人平安
祝各位同上,2019更精彩@all
-Tester-也哥-
01
进入正文
跟其它语言有所区别,Python中并没有Switch/Case语句。那么,该如何实现Switch/Case语句呢?
我们通过一个示例看。将数字1,2,3,4映射为Spring,Summer,Fall,Winter,而其它数字映射为Invalid Season。Java代码中可以用Switch/Case语句来实现:
public static String getSeason(int season) {
String SeasonName = "";
switch (season) {
case 1:
SeasonName = "Spring";
break;
case 2:
SeasonName = "Summer";
break;
case 3:
SeasonName = "Fall";
break;
case 4:
SeasonName = "Winter";
break;
default:
SeasonName = "Invalid Season";
break;
}
return SeasonName;
}
而Python中没有Switch/Case语句,那么该如何实现呢?
应该有两种实现方式,第一种是通过 if... elif... elif... else 来实现,大家应该比较熟悉,代码如下:
def getSeason(season):
"""
将season映射为字符串
:param season:
:return:
"""
if season == 1:
return "Spring"
elif season == 2:
return "Summer"
elif season == 3:
return "Fall"
elif season == 4:
return "Winter"
else:
return "Invalid Season"
第二种方式,也是比较好的一种方式,小编极力推荐的一种方式,也是更Pythonic的一种写法,是通过字典(dict)来进行实现的:
seasondict = {
1: "Spring",
2: "Summer",
3: "Fall",
4: "Winter"
}
def getSeason(season):
"""
将season映射为字符串
:param season:
:return:
"""
return seasondict.get(season, "Invalid Season")
是不是代码更为简洁易懂?
那么,如果case中是执行不同的方法,而不是简单的返回字符串,有没有办法实现呢?
答案是必须的,可以通过 if... elif... elif... else 来实现,其中的每个分支调用不同的函数,这里不再赘述。也可以通过字典来实现的,主要看一下字典的实现方式:
def Season1():
return "Spring"
def Season2():
return "Summer"
def Season3():
return "Fall"
def Season4():
return "Winter"
def Default():
return "Invalid Season"
seasondict = {
1: Season1,
2: Season2,
3: Season3,
4: Season4
}
def getSeason(season):
"""
将season映射为字符串
:param season:
:return:
"""
fun = seasondict.get(season, Default)
return fun()
这种方式需要单独定义dict来完成函数的映射,还有一种方式,即通过在类中定义不同的方法(方法名有一定的规则),然后通过getattr函数来进行实现,代码如下:
class Season():
def Season1(self):
return "Spring"
def Season2(self):
return "Summer"
def Season3(self):
return "Fall"
def Season4(self):
return "Winter"
def Default(self):
return "Invalid Season"
def getSeason(self, season):
"""
将season映射为字符串
:param season:
:return:
"""
season_name = "Season" + str(season)
fun = getattr(self, season_name, self.Default)
return fun()
Python中的这些实现Swith/Case的方法你都清楚了吗?
本文来自公众号:python那些事
文部分来源网络,如有侵权请第一时间联系删除。
02
相关推荐
03
公众号简介
1.本订阅号专业抓取各大公司经典面试题,定期推送,欢迎投稿。
2.测试从业者各项知识技术文档推送学习【自动化】【性能】【linux】【数据库】【安全】【python】【git】【面试】【领书】等
3.不定期在测试技术招聘群发送各大公司的招聘需求/推送红包/送书等活动;
& 看完本文有收获?请转发分享给更多人;点击【好看】,分享给更多朋友:);
& +微信: shichaogg 入技术、招聘群,做顶级背锅侠
& 请认准【背锅侠Tester】长按扫描下方二维码进行关注查阅更多精彩好文,领取资料。
04
长按下方二维码关注超哥
如果你也是只刺猬
请拥抱我
点击【好看】分享给更多朋友