“如何运行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的基本数据类型 。
如果在脚本中包含"shebang行"并直接执行它(./execution_methods.py),或者使用IPython或Jupyter Notebook的%run , 将会获取相同的结果 。
您还可以通过向命令行添加-m参数的方法实现以模块的方式执行 。通常情况下,推荐如下方式pip: python3 -m pip install package_name 。
添加-m参数将会运行包中__main__.py的代码 。更多关于__main__.py文件的内容可参考如何将开源Python包发布到PyPI中 。
在三种情况中,__name__都具有相同的值:字符串'__main__' 。
技术细节:Python文档中具体定义了__name__何时取值为'__main__' 。
当通过标准输入 , 脚本或者交互提示中读取数据时,模块的__name__将取值为'__main__' 。(来源)
__name__与__doc__,__package__和其他属性一起存储在模块的全局命名空间 。更多关于属性的信息可参考Python数据模型文档 , 特别是关于模块和包的信息,请参阅Python Import文档 。
导入模块或解释器
接下来是Python解释器执行代码的第二种方式:导入 。在开发模块或脚本时,可以使用import关键字导入他人已经构建的模块 。
在导入过程中,Python执行指定模块中定义的语句(但仅在第一次导入模块时) 。要演示导入execution_methods.py文件的结果,需要启动Python解释器,然后导入execution_methods.py文件:
在此代码输出中 , Python解释器执行了三次print()函数调用 。前两行由于没有变量,在输出方面与在命令行上作为脚本执行时完全相同 。但是第三个输出存在差异 。
当Python解释器导入代码时,__name__的值与要导入的模块的名称相同 。您可以通过第三行的输出了解这一点 。__name__的值为'execution_methods',是Python导入的.py文件 。
注意如果您在没有退出Python时再次导入模块,将不会有输出 。
注意:更多关于导入在Python中如何工作的内容请参考官方文档和Python中的绝对和相对导入 。
Main函数的最佳实践
既然您已经了解两种执行方式上的差异,那么掌握一些最佳实践方案还是很有用的 。它们将适用于编写作为脚本运行的代码或者在另一个模块导入的代码 。
推荐阅读
- 机械名表直播卖货,直播卖手表视频
- php打开mysql数据库文件怎么打开,php启动mysql
- 抖音什么头像疯直播间,抖音头像直播中什么意思
- mysqlserver入门教程,mysqlserver55使用
- java有源代码怎么运行 有java源码如何运行
- go语言+字符串转浮点,go语言字符串转浮点数
- chatgpt恶意问题的回答,恶意提问是谁说的
- 包含postgresql连接失败的词条
- vb.net做登录页面 用vb编写登录界面代码