Python 中实现 switch, 真的有这个必要吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
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
kunluanbudang
V2EX    Python

Python 中实现 switch, 真的有这个必要吗?

  •  
  •   kunluanbudang 2018-07-14 19:13:36 +08:00 3020 次点击
    这是一个创建于 2649 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近休假回老家, 就在长沙面了几场 Python 的面试, 也好为以后回老家发展做打算, 不得不说, 这几场面试的面试官都颇为奇葩(还有点自以为是). ( 有点想知道, 整体技术氛围如此, 还是我遇到的只是特例?)

    一个例子: Python 中怎么写 switch ?
    我: 直接写 if-else 就可以了, 简单清晰, 别人很容易看懂.
    对方: (似乎不满意) 我是说, 怎么实现 switch ?
    我: ??? 如果非要模拟这种写法, 可以用 dict 做一做分支路由, 可以实现类似 switch 的效果. 不过写 if-else 是最好的, 不花哨, 实用
    对方: (似乎还是不满意) 巴拉巴拉.... 我觉得你对技术没有热情.
    我: ?????? ( 我当时就预感接下来会有更多奇葩情况出现, 于是以 『这只是主观问题, 每个人有不同看法, ,口味不同』为由, 快速地跳过了这道题)
    果然, 更多奇葩问题出现了, 面完之后, 当即在心中, 将这家公司拉入黑名单.
    ( 结论: 回老家发展, 可能是一个美好的幻想? 还不如先在一线赚钱, )

    上面都是瞎扯淡, 找找共鸣, 大家看看就好 :)

    下面是技术问题:
    那么, 请教 V 友大佬: Python 中实现 switch, 真的有这个必要吗? 你们平时是如何做的?
    第 1 条附言    2018-07-14 20:24:41 +08:00
    这个帖子, 不可避免地, 又被上升到价值观判断了, 这是我不愿意看到的 :)

    面试官想什么, 我还真不知道, 不过『提一个明确的问题』, 也是一个面试官的基本素养吧?

    另外, 沟通交流, 尊重是相互的, 对方给我的感觉就是『自以为是, 片面地给别人打标签』, 这点基本的判断, 我个人还是有的 ( 这里, 我 judge 了别人, 是我的错, 希望我的感觉是错误的, 面试官确实是一个世外高人, 确实这个问题别有深度 :) )

    当然我也不是那种无聊的人, 非要将别人 judge 一番, 才满足, 毕竟我怎么怎么样, 也影响不到别人.
    至少我也不说别人公司的名字, 对方的名字.

    (只是发出来, 增加一下生活的调剂罢了, 大佬们千万不要随便 judge 别人哦, 也不要做价值观判断 :)


    )
    第 2 条附言    2018-07-14 20:24:58 +08:00
    这个帖子, 不可避免地, 又被上升到价值观判断了, 这是我不愿意看到的 :)

    面试官想什么, 我还真不知道, 不过『提一个明确的问题』, 也是一个面试官的基本素养吧?

    另外, 沟通交流, 尊重是相互的, 对方给我的感觉就是『自以为是, 片面地给别人打标签』, 这点基本的判断, 我个人还是有的 ( 这里, 我 judge 了别人, 是我的错, 希望我的感觉是错误的, 面试官确实是一个世外高人, 确实这个问题别有深度 :) )

    当然我也不是那种无聊的人, 非要将别人 judge 一番, 才满足, 毕竟我怎么怎么样, 也影响不到别人.
    至少我也不说别人公司的名字, 对方的名字.

    (只是发出来, 增加一下生活的调剂罢了, 大佬们千万不要随便 judge 别人哦, 也不要做价值观判断 :)


    )
    XIVN1987
        1
    XIVN1987  
       2018-07-14 19:24:44 +08:00 via Android
    别说没必要,说不定哪天 python 新版本就真给加上了,,毕竟现在 python 每个新版本都会加新语法
    keysona
        2
    keysona  
       2018-07-14 19:25:28 +08:00
    条件多的话,倾向用字典
    Dunkelnacht
        3
    Dunkelnacht  
       2018-07-14 19:27:41 +08:00
    PEP-3103 的话,十年前就被拒掉了 https://www.python.org/dev/peps/pep-3103/
    XIVN1987
        4
    XIVN1987  
       2018-07-14 19:30:50 +08:00 via Android
    @Dunkelnacht
    之前拒掉也不表示以后不会加,,
    easylee
        5
    easylee  
       2018-07-14 19:31:27 +08:00 via Android
    年轻就在一线赚钱吧……一线玩的 high 啊。
    家里挺富裕那就无所谓了。
    SimbaPeng
        6
    SimbaPeng  
       2018-07-14 19:49:56 +08:00 via Android
    我觉得当大家面试遇到奇葩问题的时候,应该转变一下想法,面试官出题的主要意图不是这道题有什么意义,更多的是考察以你的能力是否实现。能实现不代表实际中让你去这么应用。
    ebingtel
        7
    ebingtel  
       2018-07-14 19:52:42 +08:00
    @SimbaPeng 意思是用 c 拓展 支持 switch 语法?
    SimbaPeng
        8
    SimbaPeng  
       2018-07-14 19:58:30 +08:00 via Android
    我发现大多数人遇到一个自己答不出来的陌生问题,第一反应是反驳这道题有什么意义。
    young6
        9
    young6  
       2018-07-14 20:04:00 +08:00 via Android
    是没这必要。不过就像有的面试问你排序,实际开发中谁自己写排序?面试主要是看你的思维模式及解决问题的能力,我是觉得这个面试官没毛病。
    lingerz
        10
    lingerz  
       2018-07-14 20:08:19 +08:00 via Android
    赞同楼上,的确别人问你怎么实现,你回答有什么意义,他再问你,显然面试官没毛病。
    di94sh
        11
    di94sh  
       2018-07-14 20:10:20 +08:00 via Android
    有必要,原因是,写单元测试的时候可以少写很多。
    yclissetj
        12
    yclissetj  
       2018-07-14 20:10:52 +08:00 via iPad
    @young6 加一。 不过觉得说到 dict 也就够了,面试官还不满意是想听到什么答案呀……
    SimbaPeng
        13
    SimbaPeng  
       2018-07-14 20:12:26 +08:00 via Android
    @ebingtel 我并没有针对这道题而谈,我只是觉得题目是否有意义并不是大家吐槽面试官的槽点。不会就答不会就行了,避重就轻的说了一大趴啦自认为的最佳实践,难道面试官不知道这些东西吗?只会拉低面试官对你的印象而已。
    cheesea
        14
    cheesea  
       2018-07-14 20:20:11 +08:00
    赞同楼主,没意义的问题。
    退一步讲楼主你也讲了实现的思路了呀,条件分支多的话搞一个字典,这不就结了么。不知道那位面试官还想怎么样。
    lingerz
        15
    lingerz  
       2018-07-14 20:25:58 +08:00 via Android
    @cheesea 没意义是没意义,但是面试官问的问题,会就答就好了。说自己觉得那个那个才是最好,也不说会不会,这样给人感觉就是很高傲。第一遍就不满了,第二遍还要强调一遍 if 才是最佳的,这明显面试官会不满。
    rogwan
        16
    rogwan  
       2018-07-14 20:38:13 +08:00 via Android
    三个以内条 if,超过 3 条以上字典模拟 switch
    imn1
        17
    imn1  
       2018-07-14 20:50:03 +08:00
    其实你要学习一点:
    有人问你一个「明显」没有意义的问题时,这个人明显带有意义,而且这个意义和问题本身内容无关

    例如:
    你把月亮摘下来
    我和你妈掉到水里,先救谁
    mingyun
        18
    mingyun  
       2018-07-14 22:06:13 +08:00
    换个公司
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4335 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 04:09 PVG 12:09 LAX 21:09 JFK 00:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86