Python 自带 types.MappingProxyType ,可以轻易实现一个不能修改的字典:

1
2
3
4
5
6
from types import MappingProxyType

info = {'name': 'kingname', 'salary': 99999}
safe_info = MappingProxyType(info)
print('kingname 的月薪是:', safe_info['salary'])
safe_info['salary'] = 0 # 这里修改字典报错

MappingProxyType像是挡在字典前面的一面盾牌,从前面是无法修改数据的,但是,如果你确实需要修改数据,那么你可以直接修改原始的字典,此时,修改会反映到 MappingProxyType 处理过的对象上面

1
2
3
4
5
info = {'name': 'kingname', 'salary': 99999}
safe_info = MappingProxyType(info)
print('kingname 的月薪是:', safe_info['salary'])
info['salary'] = 10000 # 修改原始字典,可以改变 safe_info 
print('kingname 的月薪是:', safe_info['salary'])

Reference

1、 https://mp.weixin.qq.com/s/3_isP9-K_wsLIUCFkSblsg

打赏

微信 微信 支付宝 支付宝
万分感谢