python中main函数是什么意思,python中main函数怎么用
许多编程语言都有一个特殊的功能,当操作系统开始运行程序时,这个功能就会自动执行。这个函数通常被命名为main(),并根据语言标准具有特定的返回类型和参数。另一方面,Python解释器从文件顶部开始执行脚本,没有自动执行的特殊函数。
然而,定义一个程序执行的起点有助于理解程序是如何工作的。Python程序员提出了几种方法来实现这一点。
在本文结束时,您将了解以下内容:
什么是特殊__name__变量,在Python中是如何定义的?
为什么要在Python中使用main()函数?
在Python中定义main()函数的约定是什么
main()函数中应该包含哪些代码的最佳实践
Python中的基本main()函数
一些Python脚本包含函数定义和条件语句,如下所示:
这段代码包含一个main()函数,在程序执行时打印Hello World!此外,还包含一个条件(或if)语句来检查__name__的值,并将其与字符串“__main__”进行比较。当if语句为真时,Python解释器将执行main()函数。关于Python条件语句的更多信息可以从这里获得。
这种代码模式在Python文件中非常常见。它将作为脚本执行,并导入到另一个模块中。为了帮助你理解这段代码是如何执行的,你首先需要知道Python解释器是如何根据代码的执行方式来设置__name__的。
Python中的执行模式
Python解释器可以以两种方式执行代码:
通过命令行执行Python脚本。
将代码从一个文件导入另一个文件或解释程序。
有关更多信息,请参考如何运行Python脚本。无论哪种方式,Python都将定义一个名为__name__的特殊变量,该变量包含一个字符串,其值取决于代码的使用方式。
本文将以下示例文件保存为execution_methods.py,以探索代码如何根据上下文改变其行为:
在这个文件中,定义了对print()函数的三个调用。前两个打印一些介绍性短语。第三个print()首先打印短语value __name__ is,然后使用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,所以你可以通过输入python3 script_name.py来运行python脚本
在Windows上,命令提示符通常如下所示:
根据您的用户名,前面的内容可能会有所不同,您输入的命令位于后面。在Windows上,Python3的可执行文件通常是Python。因此,您可以通过输入python script_name.py来运行python脚本.
无论是哪种操作系统,本文中Python脚本的输出结果都是一样的。因此,本文以Linux和macOS为例。
使用命令行执行execution_methods.py,如下所示:
在此示例中,__name__的值为“__main__”,其中引号()指示该值为字符串类型。
记住,在Python中,用单引号()和双引号()定义的字符串没有区别。关于字符串的更多信息,请参考Python的基本数据类型。
如果在脚本中包含‘she bang line’并直接执行它(。/execution_methods.py),或者使用IPython或Jupyter Notebook的%run,也会得到同样的结果。
您也可以通过在命令行中添加-m参数来将其实现为一个模块。一般情况下,建议使用以下pip:python 3-m pip安装包_名称。
添加-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的情况下再次导入模块,将不会有输出。
注意:有关Python中导入如何工作的更多信息,请参考官方文档和Python中的绝对和相对导入。
英语原文:https://realpython.com/python-main-function/
Python学习交流群:531509025
译者:我是昵称~
结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!
Python基础入门教程推荐:更多Python视频教程——关注哔哩哔哩:Python学习者
【python教程】全网最易懂的1000集Python系统学习教程(最后四期问答,满满干货)
Python案例教程推荐:更多Python视频教程——关注哔哩哔哩:Python学习者
2021 Python最新最全的100个爬虫完整案例教程,数据分析,数据可视化,记得收藏!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。