Python全系列 教程
3567个小节阅读:5931k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
内存管理机制
Python是由C语言开发的,底层操作都是基于C语言实现,Python中创建每个对象,内部都会与C语言结构体维护一些值。
将压缩文件减压,可以看到有很多文件,主要关心两个(Include、Objects)
在Include目录下object.h中可以查看创建对象的结构体。
1#define _PyObject_HEAD_EXTRA \
2 struct _object *_ob_next; \
3 struct _object *_ob_prev;
4typedef struct _object {
5 _PyObject_HEAD_EXTRA
6 Py_ssize_t ob_refcnt;
7 PyTypeObject *ob_type;
8} PyObject;
xxxxxxxxxx
41typedef struct {
2 PyObject ob_base;
3 Py_ssize_t ob_size; /* Number of items in variable part */
4} PyVarObject;
在创建对象时,每个对象至少内部4个值,PyObject结构体(上一个对象、下一个对象、类型、引用个数)。
有多个元素组成的对象使用PyVarObject,里面由:PyObject结构体(上一个对象、下一个对象、类型、引用个数)+Ob_size(items=元素,元素个数)。
在python程序中创建的任何对象都会被放在refchain链表中。
类型封装结构体
xxxxxxxxxx
121f = 3.14
2'''
3内部会创建:
41.开辟内存
52.初始化
6ob_fval = 3.14 值
7ob_type = float 类型
8ob_refcnt = 1 引用数量
93.将对象加入到双向链表refchain中
10_ob_next = refchain中的上一个对象
11_ob_prev = refchain中的下一个对象
12'''
实时效果反馈
1. python在创建对象时,每个对象内部4个值,使用的结构体是_______(上一个对象、下一个对象、类型、引用个数)。
A Object结构体
B PyVarObject结构体
C PyObject结构体
2. 在python程序中创建的任何对象都会被加入到______中 。
A refchain链表
B chain链表
答案
1=>C 2=>A