为什么 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 = 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()
代码底部。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件