网站首页 > 技术文章 正文
Python是一种半编译半解释型运行环境。理解Python运行环境对后续很多问题将会有很深刻的理解.
首先,Python虚拟机会在模块 "载入" 时将源码编译成字节码 (ByteCode)。然后,这些字节码会被虚拟机在一个 "巨大" 的核心函数里解释执行。这是导致 Python 性能较低的重要原因,虽然现在有了内置 Just-in-time 二次编译器的 PyPy 可供选择。(Pypy 使用即时编译(JIT)技术,可以在运行时将 Python 代码动态地编译成机器码,从而提供更高的执行速度)
当Python虚拟机开始运行时,它通过初始化函数完成整个运行环境设置:
- 创建解释器和主线程状态对象,这是整个进程的根对象。
- 初始化内置类型。数字、列表等类型都有专门的缓存策略需要处理。
- 创建 __builtin__ 模块,该模块持有所有内置类型和函数。
- 创建 sys 模块,其中包含了 sys.path、modules 等重要的运行期信息。
- 初始化 import 机制。
- 初始化内置 Exception。
- 创建 __main__ 模块,准备运行所需的名字空间。
- 通过 site.py 将 site-packages 中的第三方扩展库添加到搜索路径列表。
- 执行入口py 文件。执行前会将 __main__.__dict__ 作为名字空间传递进去。
- 程序执行结束。
- 执行清理操作,包括调用退出函数,GC 清理现场,释放所有模块等。
- 终止进程。
不知道大家有没有注意到, Python在获取一个没有定义的变量值时候, 报错信息是NameError, 而不是和其他语言一样, 错误为变量未定义或者undefind, 如下图:
这其实和Python虚拟机加载原理有很大关系, 主要是上边第7步名字空间有关.由于本节内容主要是将Python虚拟机, 因此名字空间的内容放到后续单独出一篇文章讲解, 请关注后续更新.
猜你喜欢
- 2025-03-29 Python + Pytest 测试框架——数据驱动
- 2025-03-29 Python实现基于地图四色原理的遗传算法(GA)自动着色
- 2025-03-29 python之图像仿射变换分析:原理+图像平移
- 2025-03-29 LightGBM算法解释及举例python(lbg算法例题)
- 2025-03-29 K-Means算法原理及其python实现(学习笔记)
- 2025-03-29 原理+代码|Python实战多元线性回归模型
- 2025-03-29 Python内置装饰器:深入理解其原理和应用
- 2025-03-29 Python网络爬虫原理解构,原来如此简单!
- 2025-03-29 Python常用算法学习(4) 数据结构(原理+代码)-最全总结
- 2025-03-29 「监督学习」机器学习线性回归模型的基本原理
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)