设为首页收藏本站

自学IT吧论坛

 找回密码
 立即注册
搜索
查看: 241|回复: 0

[Python] Python中使用字典解决Switch语法的欠缺

[复制链接]
  • TA的每日心情
    无聊
    昨天 18:58
  • 签到天数: 1026 天

    [LV.10]以坛为家III

    1080

    主题

    2226

    帖子

    4516

    积分

    管理员

    坚持学习,坚持锻炼。

    Rank: 9Rank: 9Rank: 9

    积分
    4516

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2018-1-7 18:38:29 | 显示全部楼层 |阅读模式
    在其他诸多编程语法中,都存在一个常用的switch分支语法。Python语法中是没有switch分支语法的,官方建议使用if...else...语法代替。这里演示使用Python的字典来代替switch语法。以下面(PHP)的switch程序段为例,根据变量day的值输出变量dayName是星期几。
    1. $day = 8;
    2. switch (day){
    3.     case 0:
    4.         $dayName = 'Sunday';
    5.         break;
    6.     case 1:
    7.         $dayName = 'Monday';
    8.         break;
    9.     case 2:
    10.         $dayName = 'Tuesday';
    11.         break;
    12.     case 3:
    13.         $dayName = 'Wednesday';
    14.         break;
    15.     case 4:
    16.         $dayName = 'Thursday';
    17.         break;
    18.     case 5:
    19.         $dayName = 'Friday';
    20.         break;
    21.     case 6:
    22.         $dayName = 'Saturday';
    23.         break;
    24.     default:
    25.         $dayName = 'Unknown';
    26.         break;
    27. }
    复制代码


    上面的switch功能在Python中可以使用字典来替代,代码如下:


    1. day = 8

    2. def get_sunday():
    3.     return 'Sunday'

    4. def get_monday():
    5.     return 'Monday'

    6. def get_tuesday():
    7.     return 'Tuesday'

    8. def get_wednesday():
    9.     return 'Wednesday'

    10. def get_thursday():
    11.     return 'Thursday'

    12. def get_friday():
    13.     return 'Friday'

    14. def get_saturday():
    15.     return 'Saturday'

    16. def get_default():
    17.     return 'Unknown'

    18. switcher = {
    19.     0: get_sunday,
    20.     1: get_monday,
    21.     2: get_tuesday,
    22.     3: get_wednesday,
    23.     4: get_thursday,
    24.     5: get_friday,
    25.     6: get_saturday,
    26. }

    27. day_name = switcher.get(day, get_default)()
    28. print(day_name)
    复制代码
    如果switch的case分支里是复杂的代码块,上面字典对应的函数中同样可以增加和实现。

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    来自学IT吧,高薪等你拿! 立即登录 立即注册
    在线咨询
    在线咨询
    zxit_8@qq.com

    QQ|Archiver|小黑屋|自学IT吧    

    GMT+8, 2020-5-30 19:24 , Processed in 0.094738 second(s), 33 queries , Gzip On.

    © 2014-2017 自学IT吧论坛

    快速回复 返回顶部 返回列表