「Python」 数据类型
开发时优先选择内置类型及标准库:
- 性能好:编译器和解释器对内置类型有特殊优化;
- 跨平台兼容性:使用第三方代码会提高程序复杂度,增加潜在错误风险,更不利于后续升级和维护;
内置类型:
名称 | 分类 | 可变类型 | 名称 | 分类 | 可变类型 |
---|---|---|---|---|---|
int | number | No | str | sequence | No |
float | number | No | bytes | sequence | No |
dict | mapping | Yes | bytearray | sequence | Yes |
set | set | Yes | list | sequence | Yes |
frozenset | set | No | tuple | sequence | No |
一、 整数
python3 中合并了 int 和 long,统一用 int(不再支持表示 long 类型的 L 常量后缀),采用变长结构,也就意味着可以创建天文数字,只要内存允许;
- 分割标记:对于过长的数字,可进行分割标记,
123_23548_9786_8_234
等同于1232354897868234
;该方式同样适用于二进制(bin)、八进制(oct)和十六进制(hex); - 进制间转换:使用 int 函数,或使用 bin,oct,hex 函数;
- 与字符串互转:使用 int 函数;
- 运算符:除法(/,//,divmod);
- 布尔:是整数的子集;数字0、空值(None)、空序列和空字典都被视作 False,其余为 True;可重写
__bool__
或__len__
方法影响 bool 转换结果; - 枚举:python 中没有枚举的定义,是通过标准库实现的——enum;枚举内部是字典,均有 name 和 value 属性;可通过继承,将枚举值修改为任意类型;
- 内存:预缓存范围是 [-5, 256];
二、 浮点数
三、 字符串
四、 字节数组
五、 列表
六、 字典
值可取任何数据类型,键必须是不可变的(如字符串,数字或元组);
dict = {'a': 1, 'b': 2, 'b': '3'} # 定义
dict['a'] # 访问
dict['a'] = 8 # 更新
del dict['a'] # 删除键是'a'的条目
dict.clear() # 清空字典所有条目
del dict # 删除字典
cmp len str:字典的字符串表示
copy:浅拷贝 fromkeys:初始化只有 key 的字典 get:返回 value,不存在就返回 default has_key items:可遍历的 key-value 元组
keys values setdefault:如果不存在,就设置为 default uplast_modified_at:更新另一个字典到当前字典 pop popitem:删除并返回
七、 集合
附录
A 示例
1. 小技能
# 列出相关类型的抽象基类
collecions.abc
issubclass(str, collections.abc.Sequence) # True
issubclass(str, collections.abc.MutableSequence) # False
# 获取数据所占内存大小
sys.getsizeof(y)
- 二进制:常用于类似位图(bitmap)这类开关标记;
- 八进制:系统管理命令 chmod 用来设置访问权限的参数;
- 十六进制:常见于反汇编;
Comments