Python中的“or die()”

2024-06-16 11:23:44 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有人在Python中使用类似的东西:

def die(error_message):
    raise Exception(error_message)

...

check_something() or die('Incorrect data')

我认为这种风格在PHP和Perl中使用。

你觉得这种款式有什么优点吗?


Tags: ormessagedata风格defcheckexceptionerror
3条回答

很多很好的答案,但是还没有人提出用Python编写这个的明显方法:

assert check_something(), "Incorrect data"

只是要知道,如果你打开优化,它不会做检查,而不是任何人曾经做过。

好吧,首先,^{}更常见,如果你真的想要在PHP中找到与die等价的东西,你应该使用它,引发一个SystemExit错误,或者调用os._exit

PHP中die方法的主要用途是,“脚本已经陷入了无法恢复的僵局”。它很少,如果有的话,用于生产代码。最好在被调用函数中引发异常,在父函数中捕获它,并找到一个优美的退出点——这是两种语言中的最佳方法。

虽然这种风格在PHP和Perl中很常见,但它非常不符合Python,我建议您不要这样编写Python。你应该遵循你所用语言的惯例,并写下如下内容:

if not check_something():
    raise Exception('Incorrect data')

FWIW,使用“or die(…)”方式会给堆栈跟踪添加另一个级别,这是另一个小缺点。

相关问题 更多 >