在Python中,使数字不可变的设计决策是什么?

不变性有几个原因,让我们先看看不变性的原因是什么?

1-内存节省内存。如果众所周知一个对象是不可变的,那么可以很容易地复制它,为同一个对象创建一个新的引用。

表演。Python可以在创建时为不可变对象分配空间,并且存储需求是固定不变的。

2-快速执行。它不必复制对象的每个部分,只需要一个简单的引用。

很容易比较,通过引用比较相等比比较值快。

3-安全性:在多线程应用程序中,不同的线程可以与不可变对象中包含的数据交互,而不必担心数据的一致性。

即使有异常,程序的内部状态也将保持一致。

类应该是不可变的,除非有很好的理由使它们变为可变的……如果一个类不能变为不可变的,尽可能限制它的可变性

4-易于使用更容易阅读,更容易维护,也不太可能以奇怪和不可预测的方式失败。

不可变对象更易于测试,这不仅是因为它们易于模仿,还因为它们倾向于强制执行代码模式。

5-数字或元组作为字典键。这是你想用的东西。The hash table implementation of dictionaries uses a hash value calculated from the key value to find the key. If the key were a mutable object, its value could change, and thus its hash could also change. But since whoever changes the key object can’t tell that it was being used as a dictionary key, it can’t move the entry around in the dictionary. Then, when you try to look up the same object in the dictionary it won’t be found because its hash value is different. If you tried to look up the old value it wouldn’t be found either, because the value of the object found in that hash bin would be different.

返回整数:安全性(3)、易用性(4)和在字典中使用数字作为键的能力(5)是做出数字不可变决策的原因。

自创建时起具有固定的内存需求(1)。

Python中的All是一个对象,数字和字符串一样是“基本”对象。任何数量的活动都不会将值8更改为任何其他值,任何数量的活动都不会将字符串“8”更改为任何其他值。这是因为a decision in the design也是。

为什么在python中整数的值没有限制_为什么在Python中整数是不可变的?相关推荐

  1. python字典返回键值对列表_返回列表Python dict dictionaries Python 数据结构——字典 返回列表...

    最近研究返回列表,稍微总结一下,以后继续补充: 字典是比列表更先进的一种内置数据结构. "字典"就像现实中的字典一样,每一个单词对应好几个意思.在Python面里就是每一个键对应一 ...

  2. sessionlistener方法中获取session中存储的值报空指针异常_从Golang实践中得到的教训...

    当使用复杂的分布式系统时,可能会遇到并发处理的需求.我们知道golang的协程是处理并发的利器之一,加上Golang为静态类型和编译型使得其在企业中使用越来越广泛.Mode.net公司系统每天要处理实 ...

  3. python整数类型没有取值范围限制_详解Python中6种数据类型

    Python中数据类型主要有六种:数字类型,字符串类型,元组类型,列表类型,文件类型和字典类型,我们今天先介绍前四种类型. 假如在Python程序中,出现了"010",那么这个&q ...

  4. python获取字典的值_Python:如何从pandas系列中获取字典中的值

    我是python的新手,并试图从字典中获取值,其中键在数据帧列(pandas)中定义.我搜索了很多,最接近的是a 在下面的链接中的问题,但它没有答案. 所以,在这里,我试图找到相同类型的问题的答案. ...

  5. python获取子进程返回值_Python 从subprocess运行的子进程中实时获取输出的例子 Python如何抓取程序的输出?...

    关于python中用subprocess调用exe子进程的问题不懂我的人有什么资格对我指指点点,不了解我的人凭什么对我说三道四的. python杀死子进程后继续执行后面程序 程序a(python写成) ...

  6. python短信发送查询数据库结果_向Django数据库中的每个号码发送短信

    使用python/django/twilio向每个员工都有"管理"关系的表中的员工发送SMS时遇到问题 表Employees包含: fname,lname,电话号码,组 在视图.p ...

  7. python中控制代码块逻辑关系_一、Python基础知识

    1.1 Python简介 (1)解释型语言 解释型语言在运行程序的时候才逐行翻译.运行. ①优点: 有良好的平台兼容性,在任何环境中都可以运行(安装了解释器)灵活,修改代码的时候直接修改就可以,可以快 ...

  8. python中range和arange的区别_浅谈Python中range与Numpy中arange的比较

    本文先比较range与arange的异同点,再详细介绍各自的用法,然后列举了几个简单的示例,最后对xrange进行了简单的说明. 1. range与arange的比较 (1)相同点:A.参数的可选性. ...

  9. python中最常用的映射类型_什么是python中唯一的映射类型

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...

最新文章

  1. 【Linux 内核】进程优先级与调度策略 ② ( 获取调度策略对应的进程优先级函数 | sched_get_priority_max 函数 | sched_get_priority_min 函数 )
  2. 单片机模块学习之LED
  3. CMD命令行下载文件
  4. linux下的几种进程间通信方式的特点
  5. GDCM:gdcm::ByteBuffer的测试程序
  6. zblock 结构_zfs raidz结构详解
  7. 做一个更好的A牌 从《Artifact》2.0看Valve的设计思路
  8. python玩转android_怎样用python玩安卓版跳一跳
  9. tensorflow 人面关键点识别_人工智能算法-图像识别项目
  10. 多元函数的极值、微分
  11. Affinity Photo for Mac中文破解版永久激活方法
  12. 第三方支付接口游戏商户池轮巡、支付宝商户池、微信商户池、游戏商户池怎么申请?
  13. 本特利监控卡件3500/42M/128229-01后模块
  14. python免费全套教程400集视频-如何入门 Python 爬虫?400集免费教程视频带你从0-1全面掌握...
  15. 【Halcon轮廓提取】
  16. 从零开始学Swift计时器App开发
  17. U3D手游《苍穹变》性能优化经验谈
  18. 马哥教育N63期-第一周作业
  19. z变换判断稳定性和因果性_信号与系统(奥本海姆)
  20. 春夏秋冬又一春之Redis持久化

热门文章

  1. 让php来搞定一切!,ubuntu安装和配置php5
  2. 怎么把文件导入云服务器,怎么把文件放到云服务器里
  3. 读书笔记——数据压缩入门(柯尔特·麦克安利斯)下
  4. 机器学习-吴恩达-笔记-8-支持向量机
  5. Vue.js项目中,当图片无法显示时则显示默认图片
  6. AJPFX浅谈关于Java程序员缺乏面向对象的基本功的问题
  7. Spring配置中的classpath:与classpath*:的区别研究(转)
  8. 机器学习1/100天-数据预处理
  9. 第一:如何解决robot framework log.html中的中文乱码问题
  10. proteus数码管不亮是什么原因_人行道闸开后不关的原因是什么?速来get一下