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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 我们知道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语句的使用了,让我们的代码更加干净一些!

目录
相关文章
|
8月前
|
存储 Java C++
Python 教程之控制流(9)Python 中的 Switch Case(替换)
Python 教程之控制流(9)Python 中的 Switch Case(替换)
260 0
|
存储 前端开发 Java
Python 教程之控制流(9)Python 中的 Switch Case(替换)
Python 教程之控制流(9)Python 中的 Switch Case(替换)
105 0
Python 函数代替 switch/case 语句?
Python 函数代替 switch/case 语句?
|
程序员 C# Python
switch与if效率实例解析·5年以下编程经验必看【Python】
switch与if效率实例解析·5年以下编程经验必看【Python】
146 0
switch与if效率实例解析·5年以下编程经验必看【Python】
|
Rust Java Shell
Python 为什么不支持 switch 语句?
之所以 Python 没有 switch 语句,原因有:switch 的实现细节/功能点未经敲定、没有 switch 也挺好的、有其它不错的方法替代 switch、Guido 的小任性……
2356 0
Python 为什么不支持 switch 语句?
|
算法 Python
Python学习(13)--Lambda表达式和switch语句的实现
Python学习(13)--Lambda表达式和switch语句的实现 1.Lambda表达式定义匿名函数          在Python中,Lambda表达式是用来快速定义一个最小函数,这个函数小到什么程度呢,小到只有一行代码,一条语句,在Python中有时候我们为了提高程序的可读性,或者一.
1843 0
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。