Python - 谷歌教程 - 调用函数的样板代码

3

我在观看Google发布的一些YouTube视频,其中的基础课程演示了如何创建和调用函数:

def main():
    print 'Hello'

if __name__ == '__main__':   # this is the boilerplate portion
    main()

为什么我们需要花费额外的步骤来创建样板文件,如果我们可以让代码看起来像这样:
def main():
    print 'Hello'

main()

输出结果不会因为额外的代码而有所改变。-BK

3
如果想要在导入文件时不调用主函数,就需要加上 if __name__=="__main__" - Dan D.
1
https://dev59.com/bHRC5IYBdhLWcg3wD87r 包含了几个很好的答案。 - Edvard Pedersen
我现在明白它的作用了,并且我已经测试过了。它确实可以防止在调用之前运行代码。但是,为什么不通过不在此文件中包含运行选项并仅在导入它的文件中运行来使代码更简单和更清晰呢?这样可以减少按键次数。 - BK_TheMadRussian
1
我觉得我现在对它有了更深的理解。我们加入那一行代码,可以使模块不必在我们导入到主文件中运行,就可以不断修改并独立测试它,而不必每次更改后都输入和删除main()来重复测试。 - BK_TheMadRussian
当然,你可以完全省略函数调用。但是这样,在运行模块时它就不会运行。__main__测试只是一种惯用法,用于在运行模块时要运行的代码,但在导入模块时不运行。 - ch3ka
是的,我开始更加理解它了。如果您正在开发某些东西并且希望不断地独立测试模块,那么它有很好的用途。 - BK_TheMadRussian
2个回答

2

这是为了测试目的。然后,您可以在名称/主要部分下编写模块并测试其是否正常工作。但是,当您从另一个模块调用它时,您在此部分下进行的测试将不会被调用。


哦,等等,我想我现在可能明白了...所以,它允许你快速测试一个模块,看看它的功能,同时仍然可以将其加载到主文件中,除非被调用,否则不会在那里执行。如果您不想在对其进行更改以查看其工作方式后重复键入和删除main(),我认为这很有用。 - BK_TheMadRussian

0

这样做是为了防止在不同的文件中导入该文件时运行该部分代码,只有当该文件实际是第一个“调用”时,代码才会运行。


如果担心在不同文件中自动运行函数,为什么不将该部分从文件中排除,并仅在新文件中运行它。因此,您可以使用“from suchandsuch_file import main”导入主函数,然后在新文件中键入“main()”以运行它。 - BK_TheMadRussian

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