Python返回代码

Phi*_*sey 1 python styles

最近我一直在问几个关于Python中更专业和pythonic风格的问题,尽管我的问题给出了很好的答案,但我觉得我需要提出一个更广泛的问题.

通常,当编写实用函数(对于库等)处理更多副作用(文件写入,字典定义等)而不是返回值时,返回状态代码以告诉调用函数它是非常有用的通过或失败.

在Python中,似乎有三种标记方式:

使用返回值-1或0(C like)并使用诸如的语句

if my_function(args) < 0:
    fail condition
pass condition
Run Code Online (Sandbox Code Playgroud)

或使用返回值True/False

if not my_function(args):
     fail condition
pass condition
Run Code Online (Sandbox Code Playgroud)

或使用'return或'return None'使用异常(退出未知错误)

try:
    my_function(args)
except ExpectedOrKnownExceptionOrError:
    fail condition
pass condition
Run Code Online (Sandbox Code Playgroud)

哪个最好?最正确的?首选?我理解所有的工作,并且没有太多的技术优势(除了可能是异常处理的开销).

use*_*ica 7

不要返回指示错误的内容.抛出一个例外.绝对不要捕获异常并将其转换为返回代码.

  • 抛出适当类型的异常.大多数情况下,如果类型错误,则为"TypeError";如果类型正确,则为"ValueError",但参数的值在某种程度上不适合(例如,序列长于应该的长度).抛出这样一个错误的通常方法是通过做一些事情来启动你的函数,如果参数错误就会为你抛出错误 - 例如,解压缩一个应该是一个序列的参数,或者用一些应该是的东西做数学运算一个号码. (2认同)