less than 1 minute read

开发时优先选择内置类型及标准库:

  1. 性能好:编译器和解释器对内置类型有特殊优化;
  2. 跨平台兼容性:使用第三方代码会提高程序复杂度,增加潜在错误风险,更不利于后续升级和维护;

内置类型:

名称 分类 可变类型 名称 分类 可变类型
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:删除并返回

七、 集合


TOP

附录

A 示例

1. 小技能

# 列出相关类型的抽象基类
collecions.abc
issubclass(str, collections.abc.Sequence) # True
issubclass(str, collections.abc.MutableSequence) # False

# 获取数据所占内存大小
sys.getsizeof(y)
  • 二进制:常用于类似位图(bitmap)这类开关标记;
  • 八进制:系统管理命令 chmod 用来设置访问权限的参数;
  • 十六进制:常见于反汇编;

Comments