【问题标题】:Why won't my python code print anything?为什么我的 python 代码不打印任何东西?
【发布时间】:2020-02-15 10:28:08
【问题描述】:

我编写的程序在终端执行时没有打印任何内容,所以我尝试运行以下代码

import sys

#!/usr/bin/python

def main(argv):
    print  "hell0\n"
    sys.stdout.flush()

this is the terminal为什么不打印你好。主函数是否还在运行?

【问题讨论】:

标签: python


【解决方案1】:

Python 不会自动调用 main()(您需要使用 sys 库来获取 argv)。

#!/usr/bin/python

import sys

def main():
    print  "hell0\n"

main()

【讨论】:

    【解决方案2】:

    你没有在任何地方调用main,你只是定义了它。

    【讨论】:

      【解决方案3】:

      有两件事:(1) 您的#!/use/bin/python 必须是文件中的第一件事,(2) 您需要添加对main 的调用。实际上,您是在定义它,但实际上并未调用它。

      在 Python 中,您通常不会将命令行参数传递给 main,因为它们在 sys.argv 中可用。因此,您可以将 main 定义为不接受任何参数,然后在文件底部调用它:

      if __name__ == "__main__":
          sys.exit(main())
      

      __name__ 的测试可防止在文件被导入时调用 main,而不是被执行,这是处理它的标准方法。

      如果你想显式地将命令行参数传递给main,你可以这样称呼它:

      if __name__ == "__main__":
          sys.exit(main(sys.argv))
      

      这就是您需要对您当前拥有的定义执行的操作。

      【讨论】:

      • @LimitedAtonement 糟糕,OP 定义main 的方式你需要传递参数。我更新了我的答案。
      • 太棒了!五年服务荣誉!
      【解决方案4】:

      在 python 中,您的代码不必在函数中,所有函数都必须显式调用。

      试试这样的:

      #!/usr/bin/python
      
      import sys
      
      print  "hell0\n"
      

      【讨论】:

      • shebang 必须是文件的第一行。
      【解决方案5】:

      确保在定义函数后调用它,

      定义一个函数只将它存储在内存中。

      #!/usr/bin/python
      
      import sys
      
      def main(argv):
          print  "hell0\n"
          sys.stdout.flush()
      
      main()
      

      【讨论】:

      • 看起来他的主函数需要参数,但你没有传递它们?
      【解决方案6】:

      通常,人们会在脚本末尾添加一些代码来运行 main(),例如

      if __name__ == "__main__":
          main()
      

      然后,您可以在终端中运行您的脚本,它会调用 main() 方法。

      【讨论】:

      • 他的主要期望参数,所以你也需要传递这些,对吧?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2014-07-03
      • 1970-01-01
      • 2011-05-27
      • 2011-10-27
      • 1970-01-01
      • 2018-04-01
      相关资源
      最近更新 更多