本系列文章都是基于陈儒的Python源码剖析一书。

typedef struct {PyObject_VAR_HEAD
} PyVarObject;#define PyObject_VAR_HEAD               \PyObject_HEAD                   \Py_ssize_t ob_size; /* Number of items in variable part */

基于我们在Python对象基石PyObject中的对Py_HEAD的分析

我们可以得出一个Python中的变成对象表述如下:

typedef struct {Py_ssize_t ob_refcnt; struct _typeobject *ob_type;Py_ssize_t ob_size;
} PyVarObject;

只是多了一个ob_size域,可以认为这是一个无符号的整数。这个值表示Python变长对象中有多少个元素。单个元素的大小和头元素的指针都放在ob_type指针指向的数据块中。至于ob_size为什么没有放置到ob_type指向的类型数据中,可能是由于获取一个python变长对象的size是一个比较频繁的操作,这样可以避免多一次指针访问和可以更好的利用数据的空间连续性,而且也可以快速的判断出一个对象到底是变长的还是定长的

Python中的变长对象相关推荐

  1. SICP2——Python中使用函数构建对象

    一.使用对象构建抽象 1.1 数据抽象 现在到了数学抽象中最关键的一步:让我们忘记这些符号所表示对象.-根本不必考虑它们到底代表着什么东西. 上一篇文章主要强调的是对数据的操作以及这些操作之间的组合与 ...

  2. Python:Pandas之变长字典Series

    Python:Pandas之变长字典Series http://wap.sciencenet.cn/blog-3031432-1067409.html?mobile=1

  3. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  4. Python 中的可执行对象 eval,exec 和 compile与其在深度学习训练中的应用实例

    Python 中的可执行对象 eval,exec 和 compile 与其在深度学习训练中的应用实例 eval 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式(注意eval不支 ...

  5. python中可迭代对象_什么是python中的可迭代对象(iterable object)?

    我们经常在打印报错信息中和英文的文档中看到iter这个词根,可以组合成iterable/iterate等派生词.这个iter可以翻译成"迭代",这样iterable object的 ...

  6. 在C++中实现变长数组

    1.变长一维数组 这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组.实现变长数组最简单的是变长一维数组,你可以这样做: //文件名: array01.cpp #in ...

  7. Python中 redis StrictRedis对象操作string类型

    Python中 redis StrictRedis对象操作string类型 准备 在桌面上创建redis目录 使用pycharm打开 redis目录 创建redis_string.py文件 from ...

  8. python中类似对象吗_在Python中,两个对象什么时候相同? - python

    似乎2 is 2和3 is 3在python中始终为true,通常,对整数的任何引用都与对相同整数的任何其他引用相同. None(即None is None)也是如此.我知道用户定义类型或可变类型不会 ...

  9. 在Python中,如何确定对象是否可迭代?

    有没有类似isiterable的方法? 到目前为止,我发现的唯一解决方案是致电 hasattr(myObj, '__iter__') 但是我不确定这有多愚蠢. #1楼 根据Python 2词汇表 ,可 ...

最新文章

  1. 成本管理系统开源_开源教科书如何降低大学成本
  2. 了解关于Hadoop的12个事实
  3. JDBC-ODBC桥乱码问题解决方案
  4. HDU5320 : Fan Li
  5. 5类6类7类网线对比_孩子们长高的黄金时期是从3月到5月,这阶段多吃6类食物长得快...
  6. 动态规划之图像压缩问题
  7. centos搭建rsync服务!
  8. word2vec简单通俗易懂
  9. php索引数组转键数组,PHP-Codeigniter:如何从指定索引转换数组值?
  10. Javascript This 机制
  11. java markdown 转 pdf_markdown转为pdf文件
  12. 用python中的递归画一棵小树
  13. 电路知识--认识原理图(一)
  14. Pixhawk飞行模式注解(苍穹四轴)
  15. 油菜花王国(并查集)
  16. vim-python怎么用_技术|如何在使用 Vim 时访问/查看 Python 帮助
  17. 0基础学MySQL数据库—从小白到大牛(20)大小写规范、sql_mode的合理设置
  18. 用python预测小孩的身高_Python+sklearn使用线性回归算法预测儿童身高
  19. 19254:狙击战(二分答案)
  20. c语言实现strcat函数

热门文章

  1. 疲劳驾驶数据集_奥迪开放的自动驾驶数据集
  2. ue4 rpc php,UE4 Net role, Replicated and RPC
  3. JavaScript实现3D旋转相册
  4. win7右键计算机死机,win7关机时死机
  5. # EVM Overview
  6. java继承与多肽计算图形面积_java继承和多态的学习
  7. 修正clear:both失效
  8. html制作菱锥旋转,几何画板制作“虚实变化”的旋转正棱锥和正棱柱
  9. 2016年3月14日作业
  10. 中职高一计算机基础期末试题,中职计算机基础应用高一年级上学期期末考试试卷含答案...