我只是在尝试一个简单的代码:
import sys
def main():
print "this is main"
return "string1"
if __name__ == "__main__":
sys.exit(main())
当我运行这段代码时,它会给出随机结果,有时候“string1”在“this is main”之前,有时候在它之后。
为什么会这样?
2个样本输出:
这是主要的
字符串1
使用退出代码1完成处理
============
字符串1
这是主要的
使用退出代码1完成处理
答案 0 :(得分:2)
sys.exit
获取main()
的返回值,并将其生成为应用程序的错误代码。这个值通常应该是数字的,虽然Python在这里有点棘手。
来自sys.exit的文档:
如果传递了另一种类型的对象,则None等同于传递 零,任何其他对象打印到stderr并导致退出 代码为1.特别是,sys.exit(“一些错误消息”)很快 发生错误时退出程序的方法。
所以可能发生的事情是,如上所述,在stdout
(对于print
)和输出到stderr
之间进行竞赛。
我建议您尝试在stdout
(print
)之后刷新sys.stdout.flush
并查看是否以这种方式获得一致的输出。