Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我应该在main()内部还是外部定义函数?_Python_Main_Code Structure - Fatal编程技术网

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

Python 我应该在main()内部还是外部定义函数?,python,main,code-structure,Python,Main,Code Structure,在阅读了以下内容之后,我想我理解了在main()函数中封装最简单的脚本的价值 我应该在main()内部还是外部定义所有函数 有正确的方法还是错误的方法?这两种方法的优缺点是什么?我不鼓励在main()中定义函数,尤其是在Python脚本中有多个文件的情况下。函数A内部定义的任何函数B都不能被函数A之外的任何东西使用,这严重限制了其可用性。例如,在main()中定义的函数不能导入其他地方 通过在main()中定义函数,您可以轻松覆盖在其他地方编写的同名函数,但真正有用的实例非常少,您不应将

在阅读了以下内容之后,我想我理解了在main()函数中封装最简单的脚本的价值

我应该在main()内部还是外部定义所有函数


有正确的方法还是错误的方法?这两种方法的优缺点是什么?

我不鼓励在
main()
中定义函数,尤其是在Python脚本中有多个文件的情况下。函数
A
内部定义的任何函数
B
都不能被函数
A
之外的任何东西使用,这严重限制了其可用性。例如,在
main()
中定义的函数不能导入其他地方


通过在
main()
中定义函数,您可以轻松覆盖在其他地方编写的同名函数,但真正有用的实例非常少,您不应将其作为一般做法。总的来说,在
main()
之外定义函数的原因要比在内部定义函数的原因多得多,如果您正在学习Python,这肯定是您应该处理函数的方式。

因此main只是一个入口点,通常不是很多方法的好地方。最佳实践是在类之间分离功能。如果将来需要进行更改,它还可以使管理变得更容易。希望这有帮助。

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

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!

你好,好问题

只是通过“使用到”主函数(函数),许多以前在C++、java和C语言中的经验的Python程序员喜欢使用DEF<强> No> < /St>>“<强>主< /强>”。虽然“老派”程序员喜欢这样,但Python是一种非常多样化、自由形式的编程(实际上它是一种脚本语言),它不需要主函数

如果要编写一个基本的计算器程序,只需编写一个名为“calc”的函数,Python就会很高兴。我已经做了一个GUI向量计算器,没有“main”函数,所以不需要

def计算(x,y): 总和=x+y
返回和

定义有意义的函数。通常情况下,该位置位于顶层或类定义内。如果在主函数内定义函数,则无法从外部使用它。我认为您不了解它的价值。与其说是
main()
函数,不如说是
if\uuu name\uu=='\uuu main\uu'
保护提供了这些文章中讨论的大部分价值,而这反过来又围绕着从脚本中导入
内容。如果将其他函数放入
main()
,则会丢失该值。