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

2018-07-14 19:13:36 +08:00
 kunluanbudang
最近休假回老家, 就在长沙面了几场 Python 的面试, 也好为以后回老家发展做打算, 不得不说, 这几场面试的面试官都颇为奇葩(还有点自以为是). ( 有点想知道, 整体技术氛围如此, 还是我遇到的只是特例?)

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

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

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

例如:
你把月亮摘下来
我和你妈掉到水里,先救谁
mingyun
2018-07-14 22:06:13 +08:00
换个公司

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/470926

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX