python3数据模型

python3手册的目录

对象, 值和类型

对象是 Python 的抽象数据类型, 所有的数据在 Python 程序中都表示为对象和对象之间的关系.

每个对象都有一个唯一标识数字ID, 一个类型和一个值. 当一个对象被创建后, 它的标识就固定下来,不会改变. 我们可以认为ID是对象在内存中的地址. Python的is操作符就是比较的这个ID(比如: a is b), 如果我们想得到这个ID可以使用内建函数id(), 如:id(a), 查看16进制可以使用hex(id(a))

在CPython中, id(a)就是a的内存地址

查看对象的类型使用type(a)

容器 container, 可变性 mutability

容器可以包含对其他多个对象的应用. 比如list, tuple等. 有些容器的不可变的, 比如 tuple, 可变的比如 list, 对于tuple, 如果他内部引用了可变的对象, 那么, 我们改变这个可变的对象, tuple的值也会变. 但tuple无法增加减少元素.

In [11]: a =[1,2,4]
In [12]: b=[3,4,5]
In [13]: c=a,b,

In [14]: c
Out[14]: ([1, 2, 4], [3, 4, 5])

In [15]: a.append(5)

In [16]: c
Out[16]: ([1, 2, 4, 5], [3, 4, 5])
可变 mutable , 不可变 immutable
  • 对于不可变的类型(例如int): 执行代码a=1;b=1现在
    id(a)有可能等于id(b), 也可能不等于.
  • 对于可变的的类型(例如list): 执行代码c=[];d=[]那么c和d一定是2个不同的list, 各自有独立的内存空间.

标准库中的类型

Ellipsis
>>> ...
Ellipsis

这个Ellipsis也可以写成..., Ellipsis类型只有一个示例就是Ellipsis, 可以用来作为函数的返回值. 类似 “nop” 一样的占位符. 替代 pass

def will_do_something():
    ...
不可变序列 Immutable sequences
  • str()
  • tuple()
  • bytes()
可变序列 Mutable sequences
  • list()
  • bytearray()
  • array模块
集合类型
  • Sets (mutable set)
    • set()
  • Frozen sets (immutable set)
    • frozenset()
字典
  • dict
  • collections模块
    • OrderedDict
    • defaultdict
    • ChainMap
模块

m.x等于m.__dict__['x']

使用模块的m.__dict__时要注意, 如果模块不在可访问的范围, 那么就算有引用指向了模块的__dict__, 这个__dict__也会被清空.

I/O对象(也叫文件对象)

一个文件对象代表着一个打开的文件或者套接字, 并有一个文件描述符fd与这个打开的文件对应. 我们打开一个磁盘文件可以使用open()内建函数. socket.makefile()函数用来打开一个套接字.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值