Python中如何优雅地使用switch语句

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
简介: 我们知道Python中没有类似C++或者Java中的switch...case语句,我们可以使用多个if...elif...else进行模拟,但是这样的写法让代码看起来很凌乱,个人不是很推荐在代码中大量使用if语句。那么解决的办法是什么呢?答曰:字典(dict)。下面我们以两个典型案例进行说明。

Python中如何优雅地使用switch语句

我们知道Python中没有类似C++或者Java中的switch...case语句,我们可以使用多个if...elif...else进行模拟,但是这样的写法让代码看起来很凌乱,个人不是很推荐在代码中大量使用if语句。

那么解决的办法是什么呢?答曰:字典(dict)。下面我们以两个典型案例进行说明。

案例一(简单情况)

第一种简单情况就是一对一,给定一个值,返回一个值,这是C++和Java中的switch语句支持的情况。

下面的案例是将英文日期翻译为中文日期:

dates = {
    'Sun': '星期天', 'Mon': '星期一', 'Tues': '星期二', 'Wed': '星期三',
    'Thurs': '星期四', 'Fri': '星期五', 'Sat': '星期六'}

day = dates.get('Fri', '未知')
print(day)  # 输出结果为星期五

案例二(带条件判断)

第二种情况是多对一,反映在编程上就是case语句中带条件判断,这个是诸如Scala中的switch和Kotlin中的when支持的情况。

下面给出的案例是给定一个数字,如果该数字在某个范围之类,则返回一个指定的数字。

# 这里的conditions是一个函数
conditions = lambda x: {
    x < -1: 0, -1 <= x <= 1: 0.5, x > 1: 1
}

num = conditions(0.25)[True]
print(num)
num = conditions(10)[True]
print(num)

这里我们的dict不是一个普通的字典,其key是一个lambda表达式(一个函数)。如果我们调用该函数,则会返回一个字典,该字典中有两个元素:一个元素的键是True,另一个是FalseTrue元素包含的值是对应lambda函数中满足条件的给定值,False元素包含的值是对应lambda函数中最后一个不满足条件的给定值(这句话写得比较拗口,不好理解。动手实践一下,可以加深理解)。

经过上面的介绍,我们以后可以大大减少对if...else语句的使用了,让我们的代码更加干净一些!

目录
相关文章
|
存储 Java C++
Python 教程之控制流(9)Python 中的 Switch Case(替换)
Python 教程之控制流(9)Python 中的 Switch Case(替换)
681 0
|
存储 前端开发 Java
Python 教程之控制流(9)Python 中的 Switch Case(替换)
Python 教程之控制流(9)Python 中的 Switch Case(替换)
366 0
Python 函数代替 switch/case 语句?
Python 函数代替 switch/case 语句?
|
程序员 C# Python
switch与if效率实例解析·5年以下编程经验必看【Python】
switch与if效率实例解析·5年以下编程经验必看【Python】
192 0
switch与if效率实例解析·5年以下编程经验必看【Python】
|
Rust Java Shell
Python 为什么不支持 switch 语句?
之所以 Python 没有 switch 语句,原因有:switch 的实现细节/功能点未经敲定、没有 switch 也挺好的、有其它不错的方法替代 switch、Guido 的小任性……
2399 0
Python 为什么不支持 switch 语句?
|
算法 Python
Python学习(13)--Lambda表达式和switch语句的实现
Python学习(13)--Lambda表达式和switch语句的实现 1.Lambda表达式定义匿名函数          在Python中,Lambda表达式是用来快速定义一个最小函数,这个函数小到什么程度呢,小到只有一行代码,一条语句,在Python中有时候我们为了提高程序的可读性,或者一.
1938 0
|
22天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
191 102
|
22天前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
194 104

热门文章

最新文章

推荐镜像

更多