不理解python

时间:2016-10-02 13:03:58

标签: python

我只是在尝试一个简单的代码:

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完成处理

1 个答案:

答案 0 :(得分:2)

sys.exit获取main()的返回值,并将其生成为应用程序的错误代码。这个值通常应该是数字的,虽然Python在这里有点棘手。

来自sys.exit的文档:

  

如果传递了另一种类型的对象,则None等同于传递   零,任何其他对象打印到stderr并导致退出   代码为1.特别是,sys.exit(“一些错误消息”)很快   发生错误时退出程序的方法。

所以可能发生的事情是,如上所述,在stdout(对于print)和输出到stderr之间进行竞赛。

我建议您尝试在stdoutprint)之后刷新sys.stdout.flush并查看是否以这种方式获得一致的输出。