从命令行执行Python脚本会隐藏打印语句

4

我知道这可能是一个非常基础的问题,但是我在SO网站上尝试寻找简单的答案却找不到。

那么我的问题是:如何从命令行执行Python脚本以便能够看到打印语句。

例如,假设我有一个名为test.py的文件:

def hello():
    print "hello"

如果我进入解释器,导入test.py,然后调用test.hello(),一切都正常。然而,我希望能够直接运行它。

python test.py

如何从命令行执行代码并将"hello"打印到终端呢?

我应该怎么做呢?

谢谢!

更新: 是的,对不起,我的脚本实际上更像这样:

def main():
    hello()

def hello():
    print "hello"

我还需要调用main()函数吗,还是它会自动调用?

请参考这个问题获取更多信息。 - Mark Hildreth
4个回答

9

在文件末尾添加:

if __name__ == '__main__':
    hello()

2
最好还是解释__main__,即使它看起来很明显。 - m3nda

3

你的print语句被包含在函数定义块中。你需要调用该函数才能执行:

def hello():
    print "hello"

if __name__ == '__main__':
    hello()

基本上,这意味着“如果这个文件是主文件(已从命令行调用),则运行此代码。”

2

你需要让脚本实际调用你的方法。通常,你可以使用if __name__ == "__main__":块来实现。

另外,你可以使用解释器的-c参数从cli显式导入并运行你的模块,但这需要脚本在你的python路径上,并且这种做法不好,因为你现在在Python模块外执行Python代码。


0

据我理解,您的文件只有以下几行:

def hello():
    print "hello"

定义是正确的,但是什么时候才能“调用”函数呢?

您的文件应该包括对hello()函数的调用:

def hello():
    print "hello"

hello()

这种方式在单个文件中定义并调用了函数。

这是一种非常“脚本式”的方法...它有效,但一定有更好的方法来做到这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接