重复调用Python中的exit()
函数是不是很糟糕的编码习惯?
我正在使用命令行工具,因此有多个函数定义......基本上:
def usage()
def error(arg1)
def find(arg1, arg2)
在usage()
的最后,我致电exit()
,我认为这是正常的,但在find()
和error()
的成功中也会调用它(这是find()
在exit()
失败时呼唤。
正如您所看到的,{{1}}在我的代码中被多次调用,我不确定这实际上是否是一个糟糕的编码实践。
答案 0 :(得分:4)
它可以在多个位置调用exit(),如果它只是你使用它的简单程序就没问题了。但在我看来,如果有多个退出点,它总是使检查/调试代码更复杂。特别是如果您认为其他开发人员在某些时候会修改您的代码,或者您将部分代码作为库提供给其他开发人员。
其他选项是引发异常并在外部函数上捕获它们。这样,您还可以在退出之前执行一些其他任务(例如,释放一些资源)。
答案 1 :(得分:1)
IMO的做法并不是很糟糕 - 只要确保在调用过程可能有用的情况下返回反映不同出口点的退出代码......
答案 2 :(得分:1)
我一直在我的脚本中这样做。一般情况下,您不必担心这一点,因为python负责在程序终止之前清理系统。我也曾经做过
signal.signal(signal.SIGTERM, lambda *args: sys.exit(0))
强制系统清理以防万一我需要杀死一个停滞的脚本。