python 数据类型 之 利用 dict 模仿 switch语句功能
2024-08-21 00:08:29
Python本身并不提供Switch的语法功能,为了能够解决类似switch分支需求的问题,我们可以使用字典代替实现。
解决思路:
- 利用字典取值的get方法的容错性,处理switch语句中的default情况
- 设置字典的vlaue为对应方法名,来代替switch语句中的代码块
- 为不同key设置相同的value,模拟switch中穿透
def taskForSunday():
print("今天休息")
def taskForRest():
print("今天休息")
def taskForChinese():
print("今天上语文课")
def taskForMath():
print("今天上数学课")
def taskForEnglish():
print("今天上英语课")
def taskForDefault():
print("输入错误啦。。。。")
switchDic = {"Sunday":taskForRest,
"Monday":taskForChinese,
"Tuesday":taskForMath,
"Wednesday":taskForEnglish,
"Tursday":taskForEnglish,
"Friday":taskForEnglish,
"Saturday":taskForRest
}
1.测试取值
通过get获取字典key对应的方法后,又添加了个括号,这样会执行得到的方法
day1 = "Monday"
switchDic.get(day1,taskForDefault)() #打印:今天上语文课
2.测试穿透
##Wednesday,Tursday,Friday三个的效果相同
day2 = "Friday"
switchDic.get(day2,taskForDefault)() #打印:今天上英语课
3.测试Deault效果
#字典的get方法第二个参数是默认值,即通过key值不能找到value时,返回默认值
#这里使用了自定义函数的函数名:taskForDefault,用于实现switch的defalut功能
day3 = "天气不错哦"
switchDic.get(day3,taskForDefault)() #打印:输入错误啦。。。。
class Switch: switch = None @classmethod def switch(cls, day): switchDic = {"Sunday": cls.casetaskForRest, "Monday": cls.casetaskForChinese, "Tuesday": cls.casetaskForMath, "Wednesday": cls.casetaskForEnglish, "Tursday": cls.casetaskForEnglish, "Friday": cls.casetaskForEnglish, "Saturday": cls.casetaskForRest } cls.switch = switchDic.get(day, cls.casetaskForDefault)() return cls.switch @staticmethod def casetaskForSunday(): print("今天休息") @staticmethod def casetaskForRest(): print("今天休息") @staticmethod def casetaskForChinese(): print("今天上语文课") @staticmethod def casetaskForMath(): print("今天上数学课") @staticmethod def casetaskForEnglish(): print("今天上英语课") @staticmethod def casetaskForDefault(): print("输入错误啦。。。。") Switch.switch('Sunday')
最新文章
- O365(世纪互联)SharePoint 之使用列表库发布新闻
- 【Java EE 学习 72 下】【数据采集系统第四天】【移动/复制页分析】【使用串行化技术实现深度复制】
- Codeforces Round #257 (Div. 2)
- 应用代理 socket TCP协议 的资料
- IBatis一对多查询
- artDialog测试
- Nice是如何做iOS客户端架构的?
- 机器学习 —— 概率图模型(学习:CRF与MRF)
- Spark Tungsten揭秘 Day1 jvm下的性能优化
- [NOI2005] 维护数列
- 解决C盘中的文件不能修改问题
- 剑指Offer——好未来视频面知识点储备+面后总结
- Spring,@Controller,@RequestMapping, @ResponseBody,@RequestParam
- PMBook - 上课体会
- pycharm中连接公网IP方法
- 给出随机存储器(RAM)和只读存储器(ROM)的差别
- Eclipse同时显示两个编辑窗口
- 2. Dubbo原理解析-Dubbo内核实现之基于SPI思想Dubbo内核实现(转)
- c# 仿微信二维码生成
- Codeforces 822C Hacker, pack your bags! - 贪心