文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python之switch的实现

2023-01-31 03:26

关注

防伪码:忘情公子著


  switch是一种语法结构,在大多数的编程语言当中,都提供了switch语法结构。

  switch语句的作用与优点:

   switch语句用于编写多分支结构的程序,类似于if... elif... else(if多分支)语句

    switch语句表达的分支结构比if多分支语句表达的更清晰

    代码的可读性更高,执行效率也比if多分支语句要高

  python并没有提供switch语句,但是我们可以通过字典实现switch语句的功能。

    实现方法分为两步:

      1、定义一个字典

      2、调用字典的get()获取相应的表达式

  通过字典调用函数实现switch功能的方式如下:

{1:case1,2:case2}.get(x,lambda *args,**keys: [args,keys])()

  下面我们通过编写一个简单的四则运算程序来看看switch在python中到底是如何实现的,以及有何优点。

  通过if多分支来写传统的四则运算程序:

[root@localhost test]# cat cal.py 
#!/usr/bin/python
#coding:utf-8

from __future__ import division    #当除法结果有小数时保留小数

def plus(x,y):
    return x + y

def minus(x,y):
    return x - y

def times(x,y):
    return x * y

def divide(x,y):
    return x / y

def operator(x,o,y):
    if o == "+":
        print plus(x,y)
    elif o == "-":
        print minus(x,y)
    elif o == "*":
        print times(x,y)
    elif o == '/':
        print divide(x,y)
    else:
        pass

operator(2,'+',4)
[root@localhost test]# python cal.py 
6

  如上例所示,当我们要执行除法时,首先会先判断“+”、“-”、“*”三条语句,这样就会显得有点多余,降低了程序执行的效率。

  接下来我们通过switch语句来写一下这个简单的四则运算程序:

[root@localhost test]# cat scal.py 
#!/usr/bin/python
#coding:utf-8

from __future__ import division

plus = lambda x,y: x+y
minus = lambda x,y: x-y
times = lambda x,y: x*y
divide = lambda x,y: x/y

operator = {'+':plus,'-':minus,'*':times,'/':divide}

def f(x,o,y):
    return operator.get(o,lambda *args,**keys: [o,arg,key])(x,y)

print f(1,'+',2)
print f(4,'-',2)
print f(4,'*',2)
print f(3,'/',2)
print f(1,'%',2)
[root@localhost test]# python scal.py 
3
2
8
1.5
['%', (1, 2), {}]    #这里是由上面的lambda语句收集操作数、运算符和字典而得来的
                     #当运算符不是+-*/中任意一个时,则用o收集运算符存至列表中,不执行运算操作
                     #用*args收集操作数
                     #用**keys收集字典,这个示例中没有字典,所以收集到的结果是一个空字典

  如上例如示,我们将直接在字典中取到key(也就是运算符),然后进行运算,如此的话就少了传统if多分支语句的判断过程,从而大大提高程序执行效率。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯