当前位置: 首页 > 后端技术 > Python

在Python中定义Main函数_0

时间:2023-03-26 18:17:44 Python

许多编程语言都有一个特殊的函数,当操作系统开始运行程序时自动执行。该函数通常命名为main()并根据语言标准具有特定的返回类型和参数。另一方面,Python解释器从文件的顶部开始执行脚本,并没有自动执行的特殊功能。尽管如此,定义程序执行的起点有助于理解程序的工作原理。Python程序员想出了几种方法来做到这一点。读完本文,您将了解以下内容:什么是特殊的__name__变量,它在Python中是如何定义的为什么在Python中使用main()函数Python中定义main()函数的约定有哪些Best应包含哪些代码的实践Python中的基本main()函数一些Python脚本包含一个函数定义和一个条件语句,如下所示:此代码包含一个main()函数,该函数在程序执行HelloWorld!时打印。此外,包括检查__name__的值并将其与字符串“__main__”进行比较的条件(或if)语句。当if语句为True时,Python解释器将执行main()函数。可以在此处找到有关Python中条件语句的更多信息。这种代码模式在将作为脚本执行并导入另一个模块的Python文件中非常常见。为帮助理解此代码的执行方式,您首先需要了解Python解释器如何根据代码的执行方式设置__name__。Python中的执行方式Python解释器执行代码有两种方式:通过命令行执行Python脚本。将代码从一个文件导入另一个文件或解释器。有关详细信息,请参阅如何运行Python脚本。无论哪种方式,Python都定义了一个名为__name__的特殊变量,其中包含一个字符串,其值取决于代码的使用方式。本文将以下示例文件保存为execution_methods.py,以探索代码如何根据上下文更改行为:在此文件中,定义了对print()函数的三个调用。前两个打印一些介绍性短语。第三个print()将首先打印短语Thevaluenameis,然后将使用Python内置的repr()函数打印出__name__变量。在Python中,repr()函数将对象转换为解释器可以读取的形式。上面的例子通过repr()函数强调了__name__的值是一个字符串。有关repr()的更多信息,请参阅Python文档。在整篇文章中,您会到处看到文件、模块和脚本这些词。其实三者并没有太大区别。尽管如此,在强调代码的用途时还是有一些细微的差别:文件:一般来说,Python文件是任何包含代码的文件。大多数Python文件的扩展名为.py。脚本:Python脚本是一种基于命令行执行以完成某项任务的文件类型。模块:Python模块是从另一个模块、脚本或解释器导入的文件。有关Python模块的更多信息,请参阅Python文档。“如何运行Python脚本”一文也讨论了三者之间的区别。基于命令行的执行在这种方法中,Python脚本将通过命令行执行。执行脚本时,无法与Python解释器正在执行的代码进行交互。有关如何通过命令行执行代码的详细信息对本文并不重要,但您可以通过展开下面的框来阅读有关Windows、Linux和macOS之间命令行差异的更多信息。命令行环境不同的操作系统在使用命令行执行代码方面有细微的差别。在Linux和macOS中,该命令通常这样使用:美元符号($)之前的内容可能因您的用户名和计算机名称而异。您键入的命令在$之后。在Linux或macOS上,Python3可执行文件名为python3,因此您可以通过键入python3script_name.py来运行python脚本。在Windows上,命令提示符通常如下所示:根据您的用户名,>之前的内容可能有所不同,您输入的命令位于>之后。在Windows上,Python3可执行文件通常是python。因此可以通过键入pythonscript_name.py来运行python脚本。无论操作系统如何,本文的Python脚本的输出都是相同的。因此,本文以Linux和macOS为例。使用命令行执行execution_methods.py,如下所示:在本例中,__name__的值为'__main__',其中引号(')表示该值为字符串类型。请记住,在Python中,使用单引号(')和双引号(")来定义字符串没有区别。有关字符串的更多信息,请参阅Python的基本数据类型。如果您在脚本中包含“shebang行”并直接执行它(./execution_methods.py),或者使用IPython或JupyterNotebook的%run,您将获得相同的结果。您还可以通过将-m参数添加到命令行来将其作为模块执行。通常,建议使用以下pip:python3-mpipinstallpackage_name。添加-m参数将运行包中__main__.py中的代码。关于__main__.py文件的更多信息,请参考如何将开源Python包发布到PyPI。在这三种情况下,__name__具有相同的值:字符串“__main__”。技术细节:Python文档专门定义了__name__何时取值'__main__'。从标准输入、脚本或交互式提示读取时,模块的__name__将计算为“__main__”。(来源)__name__与__doc__、__package__和其他属性一起存储在模块的全局命名空间中。有关属性的更多信息可以在Python数据模型文档中找到,特别是关于模块和包的信息,请参阅Python导入文档。导入模块或解释器接下来是Python解释器执行代码的第二种方式:导入。在开发模块或脚本时,可以使用import关键字导入其他人构建的模块。在导入期间,Python执行指定模块中定义的语句(但仅在第一次导入模块时)。要演示导入execution_methods.py文件的结果,请启动Python解释器,然后导入execution_methods.py文件:在此代码输出中,Python解释器执行三个print()函数调用。前两行没有变量,在输出方面与在命令行上作为脚本执行时完全相同。但是第三个输出有区别。当Python解释器导入代码时,__name__的值与被导入的模块的名称相同。您可以从第三行的输出中看到这一点。__name__的值为'execution_methods',即Python导入的.py文件。请注意,如果您在不退出Python的情况下再次导入模块,将不会有任何输出。