为什么 main() 函数不运行?(Python 脚本的入口点是什么?)

2024-11-29 08:42:00
admin
原创
150
摘要:问题描述:我有这个代码:import sys def random(size=16): return open(r"C:Users avishankarvDocumentsPythonkey.txt").read(size) def main(): key = rand...

问题描述:

我有这个代码:

import sys

def random(size=16):
    return open(r"C:Users
avishankarvDocumentsPythonkey.txt").read(size)

def main():
    key = random(13)
    print(key)

当我尝试运行脚本时,没有错误,但似乎什么也没发生。我期望它打印密钥文件中的一些内容,但什么也没有打印。

哪里出了问题?我该如何让代码运行?


解决方案 1:

您根本没有调用主函数,因此 Python 解释器不会为您调用它。

将其添加为最后一行,以便始终调用它:

main()

或者,如果你使用常见的:

if __name__ == "__main__":
    main()

它将确保仅当该模块被 Python 解释器作为起始代码执行时,才会调用您的 main 方法。有关更多信息,请参见:if name == "__main__": 会做什么?

如果您想知道如何编写“main”函数,Guido van Rossum(Python 的创建者)在 2003 年写过相关内容。

解决方案 2:

Python 不像其他语言那样会自动调用main()函数。你所做的只是定义你的函数。

您必须手动调用您的主要函数:

main()

另外,你可能经常在某些代码中看到这种情况:

if __name__ == '__main__':
    main()

解决方案 3:

有些事情确实发生了,只是不引人注意

Python 从上到下运行脚本。def是一个语句,当遇到它时,它会像其他语句一样执行。但是,这样做的效果是创建函数(并为其指定名称),而不是调用它。同样,import是一个加载其他模块的语句(并使其代码从上到下运行,具有自己的全局变量上下文),并为其指定名称。

因此,当示例代码运行时,会发生三件事:

  • 标准库模块的代码sys运行,然后sys我们自己模块的全局变量中的名称就绑定到该模块

  • 根据 的代码创建一个函数random,然后将名称random绑定到该函数

  • 根据 的代码创建一个函数main,然后将名称main绑定到该函数

没有任何内容可以调用这些函数,因此它们不会被调用。由于它们不会被调用,因此它们内部的代码不会运行 - 它仅用于创建函数。由于该代码不会运行,因此不会读取文件,也不会编辑任何内容print

没有“特殊”的函数名称

与其他一些语言不同,Python并不关心函数的名称main或其他内容。它不会自动运行。

正如 Python 之禅所说,“显式优于隐式”。如果我们想要调用一个函数,我们必须调用它。唯一自动运行的是顶层的东西,因为那些是我们明确给出的指令。

脚本从顶部开始

在许多实际脚本中,您可能会看到一行写着if __name__ == '__main__':。这不是“脚本开始的地方”。脚本从上到下运行。

请阅读“如果 name == "__main__":会做什么?”以了解此类语句的目的(简短版本:如果其他人将此文件作为模块使用,if则确保跳过顶层代码的一部分)。它不是强制性的,并且没有任何特殊的“信号”目的来说明代码从哪里开始运行。它只是一个完全正常的语句,用于检查稍微不寻常的情况。没有什么要求您在脚本中使用它(除了想要检查它检查的内容),也没有什么可以阻止您多次使用它。也没有任何东西阻止您检查是否等于其他值(它只是……几乎肯定是无用的)。import`if`__name__

解决方案 4:

Python 中没有这种main方法,你需要做的是:

if __name__ == '__main__':
    main()

解决方案 5:

您没有调用该函数。将其放在main()代码底部。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1247  
  IPD(Integrated Product Development)研发管理体系作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用,助力企业提升产品开发效率、降低成本、增强市场竞争力。深入理解其核心要素,对于企业成功实施 IPD 研发管理体系至关重要。以下将对 IPD 研发管理体系的四大核心要素进行详细解析。...
IPD流程中的charter   19  
  IPD(Integrated Product Development)研发管理体系强调将产品开发视为一个完整的流程,从市场需求出发,整合企业的各种资源,实现产品的快速、高质量交付。在这个过程中,成本控制是至关重要的一环,它直接关系到产品的竞争力和企业的盈利能力。有效的成本控制能够确保在不牺牲产品质量和性能的前提下,降低...
IPD开发流程管理   22  
  IPD(Integrated Product Development)项目管理作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。它通过整合跨部门团队,实现从概念到产品上市的全流程高效管理,提升产品竞争力。深入探讨IPD项目管理的六个关键阶段,对于企业理解和运用这一模式,优化产品开发流程具有重要意义。概念阶段概...
IPD概念阶段   29  
  IPD(Integrated Product Development)流程管理作为一种先进的产品开发管理模式,旨在通过整合各种资源,实现产品开发的高效、协同与创新。在这一流程管理体系下,产品质量保障成为企业关注的核心要点之一。有效的产品质量保障策略不仅能够提升产品的市场竞争力,还能为企业赢得良好的声誉和客户忠诚度。接下...
华为IPD   24  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用