最近我一直在问几个关于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)
哪个最好?最正确的?首选?我理解所有的工作,并且没有太多的技术优势(除了可能是异常处理的开销).
不要返回指示错误的内容.抛出一个例外.绝对不要捕获异常并将其转换为返回代码.