1.定长类型和变长类型

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

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

1. 定长类型

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

>>> a=100l
>>> type(a)
<type 'long'>
>>> id(a)
139791554736432
>>> a+=1
>>> id(a)
139791554736464

2. 变长类型

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

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

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


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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值