Python中的"or die()
有没有人用过像这样的东西在Python里:
def die(error_message):
raise Exception(error_message)
...
check_something() or die('Incorrect data')
我觉得这种风格在PHP和Perl里是常见的。
你觉得这种[风格]有什么优缺点吗?
7 个回答
27
虽然这种写法在PHP和Perl中很常见,但在Python中就显得不太合适,我建议你不要这样写Python代码。你应该遵循你所使用语言的惯例,写成下面这样:
if not check_something():
raise Exception('Incorrect data')
顺便说一下,使用“or die(...)"这种写法会让你的错误追踪信息多出一层,这也是一个小缺点。
51
很多人给出了很好的答案,但还没有人提到用Python写这个的明显方法:
assert check_something(), "Incorrect data"
不过要注意,如果你开启了优化,这个检查就不会执行了,不过其实很少有人会这样做。
90
首先,sys.exit([arg])
是更常用的方法。如果你想要在Python中实现类似PHP的 die
功能,应该使用这个,或者抛出一个SystemExit 错误,或者调用os._exit。
在PHP中,die
方法的主要用途是表示“脚本遇到了无法恢复的障碍”。在实际的生产代码中,这种用法很少见。更好的做法是在被调用的函数中抛出一个异常,然后在父函数中捕获这个异常,找到一个优雅的退出点——这在两种语言中都是最好的方式。