• 【无标题】


    python 源码刨析

    当这一章节有幸被你看见,那说明你即将从python入门跨往精通。你是否有这样的困惑,当你这个阶段已经掌握了python 基础语法,对于日常搬砖也游刃有余,似乎自己已经爬上了python这座大山山顶,年轻人不要被眼前的风景所迷惑,背上你的本打算驻足的行囊继续前行吧。当你想真正的揭开python神秘的面纱,一睹她的芳容,你绕不开的必将是源码,当你理解了吉多·范罗苏姆(Guido van Rossum,1956年1月31日)的思想,你会感叹大神思考问题方法的美妙,就像你看漫威英雄拯救世界一样。

    1.0 python 架构

    主要分为以下三个部分:
    1、python 模块、库、用户自定义模块
    2、python 解释器(interpreter)

    在解释器中,箭头的方向指示了 Python 运行时的数据流方向。
    其中 Scanner 对应词法分析,将文件输入的 Python 源代码或从命令行输入的一行行 Python 代码切分为一个一个的 token;Parser 对应语法分析部分,在 Scanner 的分析结果上进行语法分析,建立抽象语法树(AST);
    Compiler 是根据建立的 AST 生成指令集合— —Python 字节码(byte code),就像 Java 编译器和 C#编译器所做的那样;
    最后由 Code Evaluator 来解释并执行这些字节码。因此,Code Evaluator 又可以被称为执行引擎。
    
    • 1
    • 2
    • 3
    • 4

    3、对象(object)、类型系统(type structures)、内存分配器(memory allocator)、运行状态信息(current status of python)

    对象(object)/类型系统(type structures):python 的内建对象,如 list dict 等等。
    内存分配器:负责创建对象时,申请内存,及pytho运行时与 c 中malloc的一层接口
    运行状态信息:维护了解释器在执行字节码时不同的状态之间切换的动作(一个巨大而复杂的有穷状态机)。

    在 Interpreter 与右边的对象/类型系统,内存分配器之间的箭头表示“使用”关系;而与运行时状态之间的箭头表示修改关系,即 Python 在执行的过程中会不断地修改当前解释器所处的状态,在不同的状态之间切换。
    在这里插入图片描述

  • 相关阅读:
    计算机毕业设计之旅游分享网站
    恶意文件分类
    【Spring boot 整合 JPA 保存数据和Spring boot 使用 JdbcTemplate 保存数据】
    算法学习笔记(7.3)-贪心算法(最大切分乘问题)
    一文详解ATK Loss论文复现与代码实战
    Sd-CDA (自退化对比域适应框架):解决工业故障诊断中数据不平衡问题
    Java AOP Framework概述
    this的指向
    k8s configMap挂载(项目配置文件放到configMap中,不同环境不同配置)
    数据结构与算法复习:第七弹
  • 原文地址:https://blog.csdn.net/m0_55837832/article/details/126463086