作者edwar (海边的野孩子)
看板Python
标题Re: [问题] 怎麽用 Python 写出 switch 的功能?
时间Fri Oct 20 00:47:45 2017
※ 引述《henry8168 (番薯猴)》之铭言:
: 大家好。
: 很多人都说 if else 已经很够用了,不需要 switch,
: 但 C 语言的 switch 有一个特点就是,如果每个 case 不加上 break,
: 就能够继续执行下方其他 case 的行为。
我比较常用 return, 会像底下这样写:
----
def init_phase():
releasers = []
def error(msg, releasers):
print( msg + ": initial failed.\n" )
while releasers:
(releasers.pop())()
return -1
if init_process1() < 0:
return error("init_process1", releasers)
releasers.append(release_process1)
if init_process2() < 0:
return error("init_process2", releasers)
releasers.append(release_process2)
if init_process3() < 0:
return error("init_process3", releasers)
releasers.append(None) # 'None' is safe because no error() hereafter
# replace None if there is release_process3()
print("initialization succeeded !!")
return 0
====
因为要先放 release_xxx 进 releasers, 会有一些 overhead.
如果有更多层的init_xxx, 也可以考虑再用 array(init_xxx, release_xxx, msg_xxx)
+ for + zip 包起来.
for i, m, r in zip(init_xxx, msg_xxx, release_xxx):
if i() < 0:
return error(m, releasers)
releasers.append(r)
return 0;
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.228.228.54
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1508431668.A.61F.html
※ 编辑: edwar (36.228.228.54), 10/20/2017 00:49:23