Python 我是从上到下编码还是使用if“name”重要吗__主要的;习俗?

Python 我是从上到下编码还是使用if“name”重要吗__主要的;习俗?,python,Python,我的大多数Python脚本(主要是为web抓取/数据科学应用程序编写的)都采用这种格式: # import whatever packages import x, y, z # do some web-scraping and data manipulation # write some niche function I need # make some plots and basically end the script 这一切都是通过交互式编辑器/控制台(如Eclipse)完成的。我

我的大多数Python脚本(主要是为web抓取/数据科学应用程序编写的)都采用这种格式:

# import whatever packages
import x, y, z

# do some web-scraping and data manipulation

# write some niche function I need

# make some plots and basically end the script
这一切都是通过交互式编辑器/控制台(如Eclipse)完成的。我基本上写上面的代码,然后复制粘贴下面的代码进行测试


有没有更“标准”的方法?我知道C在
main
函数上面定义了函数,我看到Python中的包带有
if\uuuu name\uuuu==“\uuuu main\uuu>约定;这是发展的“适当”方式吗?我想核心问题是您是否也希望能够使用您在其他项目中编写的函数。

我见过Python软件包,其中包含
if uuuu name uu==“uu main uu”
以前在文件中的不同位置编写的函数,以及在同一文件的其他位置定义的main()。然而,我认为,它应该放在你打算作为主要文件的底部

例如,它可能看起来像这样:

import everything

define class1
    define function1

define class2
    define function2
    define function3

define main()
    call function3
    call function4
    do_things

define function4
define function5

if __name__ == "__main__":
    run_main()
上面的示例是我在工作中实际运行的东西的一个非常通用的版本。当执行时,它会调用其他几个文件,并且工作得很好。它甚至在
if\uuuuuu name\uuuuu==“\uuuuu main\uuuuu”:
块中进行检查,以检查Python的最低版本


希望这能有所帮助。

如果使用
的主要原因是,如果从另一个文件导入文件,那么它下面的代码就不会运行。在python中导入文件时,它只需在解释器中运行,就好像它当时已粘贴在文件中一样,但通常您只需要文件中定义的函数,而不需要在文件中运行任何代码

例如,如果您想测试文件中的函数,或者在另一个文件中使用它们,您应该将实际运行函数的代码放在
下,如果

因为您是为自己的消费编写代码,所以如果您希望以可重用的方式编写代码,那么是否将代码放在
下完全取决于您自己


关于如何组织代码,Python中没有官方的、普遍遵循的标准。关于您的具体问题,为了便于阅读,并遵循常见的样式模式,我建议您将函数放在顶部,并将web抓取、数据处理和绘图分组在底部。

请查看主题“if main”模式很有用,因为它允许您将此文件中的内容导入其他python脚本和模块<代码>如果uuu name uuuu='\uuuuu main uuuu'
与代码组织毫无关系。因此,这个问题并不是只针对一个主题,而且可以说是太宽泛了。@HåkenLid:另外,当你想使用
pydoc
时,它也会有所帮助。你最后一段的第一句话根本不正确。您还可以添加一些理由,说明为什么使用
\uuuuuu name\uuuu=='\uuuuu main\uuuuu'
(关于这个问题的评论中有一些)。无论如何,这是一个很好的文件结构,也是一个不错的建议。“如果代码中没有包含If name==“main”:任何地方都无法运行它。”这是错误的——只要调用run_main(),就可以了。但是,如果没有if,您将无法运行代码;-)<代码>如果你没有在代码中的任何地方包含If\uuu name\uuuu==“\uuu main\uuuuuuuu”:你将无法运行它。
嗯,什么?我应该校对我的回答!对不起,伙计们。谢谢你指出这一点。(编辑以修复此问题!)