美文网首页我的Python自学之路
说说 Python 的不可变字典类型 MappingProxyT

说说 Python 的不可变字典类型 MappingProxyT

作者: deniro | 来源:发表于2020-11-22 15:53 被阅读0次

MappingProxyType 类接受一个字典入参,它会返回一个只读的映射视图1。这个视图对象会受原字典对象的影响,也就是说如果原字典对象中的内容发生变化,那么这个视图对象也会跟着发生变化。

dict={1: 'A'}
not_modify_dict=MappingProxyType(dict)
logging.info('not_modify_dict -> %s', not_modify_dict)
logging.info('not_modify_dict[1] -> %s', not_modify_dict[1])
# not_modify_dict[2]='B'
dict[2]= 'B'
logging.info('not_modify_dict -> %s', not_modify_dict)
logging.info('not_modify_dict[2] -> %s', not_modify_dict[2])

运行结果:

INFO - not_modify_dict -> {1: 'A'}
INFO - not_modify_dict[1] -> A
INFO - not_modify_dict -> {1: 'A', 2: 'B'}
INFO - not_modify_dict[2] -> B

如果这里给 not_modify_dict 赋值,比如 not_modify_dict[2]='B',那么就会抛出 TypeError: 'mappingproxy' object does not support item assignment。

因此 MappingProxyType 类对象适用于那些一旦初始化就不能修改的场景。


参考资料:
【1】Luciano Ramalho (作者),安道,吴珂 (译者).流畅的Python.人民邮电出版社,2017:154-155.

相关文章

  • 说说 Python 的不可变字典类型 MappingProxyT

    MappingProxyType 类接受一个字典入参,它会返回一个只读的映射视图1。这个视图对象会受原字典对象的影...

  • Python可变类型与不可变类型

    Python可变类型与不可变类型 1、可变类型:List(列表),Dic(字典),Set(集合) 2、不可变类型:...

  • Python面试基础整理

    Python可变类型与不可变类型不可变类型:数字、字符串、元组可变类型:列表、字典 浅拷贝和深拷贝浅拷贝:新旧对象...

  • Day8-2 字典

    二、字典 字典基础 什么是字典(dict)python提供的容器型数据类型,可变并且无序可变 - 支持元素的增删改...

  • 列表

    Python中的数据类型:数字(不可变)、字符串(不可变)、列表(可变)、元祖(不可变)、字典(可变)、集合 容器...

  • 2018年6月19日【python学习笔记】

    列表 python中的数据类型:数字(不可变)、字符串(不可变)、列表(可变)、元祖(不可变)、字典(可变)、集合...

  • python基础

    python 类型与运算 可变类型与不可变类型 核心类型中,数字、字符串和元组是不可变的;列表和字典不是这样 可作...

  • python可变类型的陷阱

    python变量分为两种类型:不可变类型(数字、字符串、元组)可变类型(列表、字典) 本文讲述两个可变类型的坑 例...

  • 2018-11-21

    3.6) 字典类型:dict 字典dict 是python中唯一的映射类型(哈希表) 字典对象是可变的,但key是...

  • 01.03 笔记-字典

    字典 什么是字典 python提供的容器型数据类型,可变并且无序的序列 可变 - 支持增删改 无序 - 不支持查,...

网友评论

    本文标题:说说 Python 的不可变字典类型 MappingProxyT

    本文链接:https://www.haomeiwen.com/subject/vrvuiktx.html