2016 - 2024

感恩一路有你

python 有switch case语句吗 switch语句中,case的后面为什么必须是常量?

浏览量:1862 时间:2021-03-13 07:56:50 作者:admin

switch语句中,case的后面为什么必须是常量?

因为C语言中的switch不能代替if。开关将在编译时优化。根据case标签后面的常量值,将生成一个跳转表。经过几次比较,您可以跳转到相应的标记。因此,标签不能重复。如果变量是允许的,切换只能退化为一系列的If-else,一个数据只能从开始到结束进行比较,从而失去了切换的意义。跳转表和逐个比较的复杂度有很大的不同。这就是Python没有在C语言中引入与switch case对应的控制结构的原因之一。

为什么很多程序员不用switch,而是大量的if……else if?

答:主要是因为交换机不适合实际复杂的业务系统需求。业务在不断变化和迭代。一旦需求发生变化,条件的复杂性就很高,交换机无法处理。

开关何时合适?它的场景是基于单个变量的值(例如枚举),这比if条件更可读。

从上面的场景来看,它太有限了。让我简单地谈谈它的一些缺点:

1。真正的业务场景非常复杂,条件也不单一。一旦需求发生变化,维护代码就会崩溃。

2. 开关经常忘记写中断。据估计,很多人都忘了粗心地写。如果你看看Google的代码规范,你会发现Google对switch有很多要求。

事实上,有些人仍然使用交换机,这部分是由于历史原因。然而,随着科学技术的发展,原有的设计和设计都相对滞后。

某些编程语言(如python)没有开关语法。当然,一些新的语言golang和kotlin仍然是继承的,但是switch被打包了,被误解的语法被删除了,这使得switch更加灵活。没有包装很难使用。

通过上述缺点,即if语句更加灵活,并且根据业务逻辑条件编写,可维护性高。同时,只要代码质量高,可读性就会更高。

实际业务非常复杂,我不建议您必须使用大量的if,相反,它应该尽快返回以减少嵌套,从而增加可读性并降低维护成本。

简述switch语句的执行过程?

因为switch中的case值是常量,所以编译器将对case值进行排序。在程序运行过程中,在排序的序列中查找值,然后找到要执行的相应代码是非常快的(在排序的海量序列和天文序列中进行的比较不超过25次)。

在C/C中,当数量较少时,差距可能不明显,但在脚本语言中,差距非常大。在我设计的一种脚本语言中,switch语句总是比if-else语句快(因为switch语句非常便于优化——它可以像C/C一样快速优化)。

Python不支持switch语句。不幸的是,这个理由很有欺骗性。

python 有switch case语句吗 python case语句 python中if语句用法

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。