首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
华为云
V2EX  ›  Python

Python 没有 switch case,于是写了 n 多个 if else,有简写的方法吗?

  •  
  •   wsds · 213 天前 · 2794 次点击
    这是一个创建于 213 天前的主题,其中的信息可能已经有所发展或是发生改变。

    condition 条件语句包含多个判断条件的话

    if condition_1:
        statement_block_1
    elif condition_2:
        statement_block_2
    elif condition_3:
        statement_block_3
    elif condition_4:
        statement_block_4
    elif condition_5:
        statement_block_6
    else:
        statement_block_7
    
               
    
    16 回复  |  直到 2018-04-18 10:29:00 +08:00
        1
    changrui0608   213 天前   ♥ 2
    不确定是不是足够好的方法,如果分支太多可以用字典存 func,或者可以用 default dict 应对 default 情况
    ```py
    def func1(*args, **kwargs):
    pass

    def func2(*args, **kwargs):
    pass

    func_dict = {
    'condition1': func1,
    'condition2': func2,
    }

    real_condition = 'condition1'
    func_dict[real_condition]()
    ```

    逻辑特别简单的话,也可以用 lambda 表达式省行数
        2
    wnma3mz   213 天前 via Android
    一楼正解
        3
    super452   213 天前
    学习了
        4
    qianc1990   213 天前
    用字典啊, 哥
        5
    wsds   213 天前
    @qianc1990 if 条件包括多个判断语句啊,用字典怎么搞?
    if a==b and a>0:
    condition
        6
    relic   213 天前
    如果对顺序有要求,不要用字典,用 tuple 封装
        7
    wsds   213 天前
    @changrui0608 我比较好奇 lambda 表达式
        8
    SuperMild   213 天前
    其实直接用多个 if elif 就很好。
        9
    wsds   213 天前
    @relic 老铁,借一步说话
        10
    Hopetree   213 天前
    不明白为什么要把这种最简单明了且容易读的代码改成别的?
    写代码的目的难道不是为了在不影响效果的前提下简单明了易读吗,if elif 最完美
        11
    x7395759   213 天前   ♥ 1
    @Hopetree 效率上有差距,虽然大多数的情况下不管,但是作为纯技术讨论是有意义的

    附带官方解释: https://docs.python.org/2/faq/design.html#why-isn-t-there-a-switch-or-case-statement-in-python

    if else 是官方认可的方式
        12
    Hopetree   212 天前
    @x7395759 厉害了,没想到官方居然还真考虑过这个问题:smile:
        13
    xieranmaya   212 天前
    如果我没记错的话,是专门不设计 switch 语句的
        14
    testsec   212 天前 via iPhone
    又学到一波操作
        15
    gnozix   212 天前
    Python cookbook 你值得拥有
        16
    alvy   212 天前
    字典
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3419 人在线   最高记录 3821   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 24ms · UTC 08:06 · PVG 16:06 · LAX 00:06 · JFK 03:06
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1