1.定长类型和变长类型

Python中一切皆对象,而一切对象皆有类型,而类型对象也有类型,理解起来有点绕!

常用的类型有int、float、long、string、list、tuple、dict这些,而我们可以将这些类型分为以下2类:

1. 定长类型

int、float、long这些都是定长类型,且是不可变类型,即我们无法对这些类型的对象进行原地修改,我们通常看到的修改都是通过创建一个新的对象来实现的; 如下我们对一个long型的变量a进行加1操作,我们可以看到a所指对象的内存地址发生了变化

>>> a=100l
>>> type(a)

>>> id(a)
139791554736432
>>> a+=1
>>> id(a)
139791554736464

2. 变长类型

string、list、tuple、dict这些属于变长类型,我们所谓的定长变长并非指对象占用的内存是否可变,而是指对象中包含的基本元素个数在创建时是否固定;举栗子,int在创建时永远只会包含1个基本元素(整数),而string在创建时可以包含任意个基本元素(字符),所以通常来说容器类型都属于变长类型

变长类型可继续分为可变类型和不可变类型:

string和tuple是典型的不可变类型,而list和dict则是可变类型


我们在学习CPython源码时要对定长变长类型概念有所理解,那么在查看objects的实现时才会不感到迷糊;

而可变不可变类型的理解则对我们编写Python脚本大有裨益


你可能感兴趣的:(CPython2.7源码学习)