我应该将函数定义放在main()内部还是外部?

10

3
将函数定义在其有意义的地方,通常是在顶层或类定义内部。 - Dietrich Epp
2
如果你在主函数内定义一个函数,那么你就无法从外部使用它。 - miindlek
2
我认为你并没有理解它的价值。它不是 main() 函数本身,而是 if __name__ == '__main__' 保护语句提供了这些帖子中讨论的大部分价值,而这又集中在能够从脚本中 import 东西上。如果你把其他函数放在 main() 中,那么你就会失去这个价值。 - Two-Bit Alchemist
4个回答

8
我建议不要在main()函数内部定义函数,特别是当你在Python脚本中有多个文件时。在函数A内部定义的任何函数B都不能被函数A外部的任何内容使用,严重限制了其可用性。在main()函数内部定义的函数也无法在其他地方导入。
main()函数内部定义函数可以让您轻松覆盖可能已经编写在其他地方并具有相同名称的函数,但实际上这种情况非常少见,您不应该将其作为一般惯例。总体而言,在main()函数外部定义函数的原因比在内部定义函数的原因多得多,如果您正在学习Python,那么这绝对是应该遵循的做法。

5

如果你在主函数内部定义了一个函数,那么你无法从外部使用它。以下是一个例子:

def outer():
    print "outer function" 

def main():
    def inner():
        print "inner function"
    inner()

if __name__ == "__main__":
    main()  # outputs: "inner function"
    outer() # outputs: "outer function"
    inner() # fails!

0

所以,main函数只是一个入口点,通常不适合放置大量的方法。最佳实践是将功能分离到各个类中。这也使得在未来需要进行更改时更容易管理。希望这可以帮助到您。


0

你好,问得好。

许多有C++、Java和C#经验的Python程序员习惯于使用def name = "main"来定义某些函数,虽然这种方式更适合“老派”的程序员,但是Python是一种非常灵活、自由的编程语言(实际上它是一种脚本语言),不需要一个主函数。

如果你要制作一个基本的计算器程序,你只需要创建一个名为“calc”的函数,Python就可以愉快地工作了。我已经制作了一个GUI向量计算器,没有“main”函数,所以完全没有必要。

def calc(x, y): sum = x + y return sum


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