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

2024-11-29 08:42:00
admin
原创
4
摘要:问题描述:我有这个代码: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()代码底部。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   649  
  如何借鉴华为IPD体系优化企业研发?在当今竞争激烈的市场环境中,企业要想保持技术领先和产品竞争力,必须拥有一套高效且严谨的研发管理体系。华为作为全球领先的ICT解决方案提供商,其集成产品开发(IPD, Integrated Product Development)体系与质量管理体系(如ISO 9000系列)的融合实践,...
IPD项目管理   0  
  IPD流程图的7种经典绘制方法详解在产品开发领域,集成产品开发(Integrated Product Development,简称IPD)流程被广泛应用,以提高产品开发的效率和质量。IPD流程图作为这一流程的可视化工具,其绘制方法至关重要。本文将详细介绍七种经典的IPD流程图绘制方法,帮助项目管理人员和团队更好地理解和...
IPD研发管理体系   0  
  IPD流程:企业创新管理的核心引擎在当今快速变化的市场环境中,企业要想持续保持竞争力,就必须不断进行创新。而IPD(Integrated Product Development,集成产品开发)流程作为一种先进的产品开发管理模式,正逐渐成为众多企业提升创新能力、加速产品上市速度、降低开发成本的重要选择。本文将深入探讨IP...
IPD管理   0  
  IPD流程与传统产品开发流程的概述在产品开发领域,企业不断寻求高效、系统的管理方法以确保产品能够顺利从概念转化为市场成功的产品。集成产品开发(Integrated Product Development,简称IPD)流程与传统产品开发流程是两种截然不同的管理理念和方法。传统产品开发流程往往以职能部门为核心,各部门按顺序...
IPD流程中PDCP是什么意思   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用