首页 > 编程问答 >如何在两个不同的内存位置创建 int 1 ?

如何在两个不同的内存位置创建 int 1 ?

时间:2024-08-02 16:08:16浏览次数:10  
标签:python cpython

我想向某人展示如何使用 is 而不是 == 来比较整数可能会失败。 我认为这会起作用,但事实并非如此:

>>> import copy
>>> x = 1
>>> y = copy.deepcopy(x)
>>> x is y
True

我可以轻松地为更大的整数做到这一点:

>>> x = 500
>>> y = 500
>>> x is y
False

如何用较小的整数演示相同的事情,这些整数通常可能用于 python 中的类似枚举的目的?


Python 在内部缓存某些小的整数(尤其是介于 -5 到 256 之间的整数),以便重复使用。这意味着在的第一个示例中, x y 最终都引用了内存中的同一个 1 对象。

为了证明 is 与小型整数的比较可能会失败,需要强制创建两个单独的整数对象。一种方法是使用 int() 构造函数取消缓存的数字:

>>> x = 1
>>> y = int(str(x))
>>> x is y
False

在这个例子中:

  1. x 被赋值为整数 1
  2. y 被赋值为从 x 的字符串表示形式(“1”)转换而来的一个 新的 整数对象。

由于 y 是从一个新的对象创建的,而不是直接从缓存的 1 创建的,所以 x is y 返回 False

请记住 ,这种行为是针对 CPython 实现的,并且在不同的 Python 解释器或版本中可能有所不同。依靠 is 来比较整数通常不是一个好习惯,因为它可能导致意外的结果。坚持使用 == 进行值比较。

标签:python,cpython
From: 21456318

相关文章

  • Qt C++ 调用 Python 之 PyObject* 数据类型转换
    整数:PyLong_FromLong和PyLong_AsLong类型检查函数:PyLong_Check()intcppInt=42;//C++整数转换为Python整数对象PyObject*pyInt=PyLong_FromLong(cppInt);//Python整数对象转换为C++整数longcppIntFromPy=PyLong_AsLong(pyInt);Py_DECREF(pyInt)......
  • Python 警告:重试(重试(总计=4,连接=无,读取=无,重定向=无,状态=无))
    我正在尝试pipinstall--upgradepip并保持收到此错误:WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'ProxyError('Cannotconnecttoproxy.',NewConnectionError('<......
  • {Python} 有没有办法从函数中“提取”返回值变量并在其他地方使用它,而不调用原始函数?
    第一次在这里发帖。对python来说相对较新,我正在开发一个程序,它基本上是一个随机故事生成器,用于学习语言、发展技能并添加到我的投资组合中。我有一个主文件(最初启动该程序)、一个简介文件(对于介绍部分,获取用户名以及我试图“提取”user_name变量的位置),一个函数文件,其中包......
  • 为什么我在 Python 中的 Skip-Gram 实现会产生不正确的结果?
    我正在使用Python实现Word2Vec的Skip-Gram模型。然而,正如生成的嵌入及其可视化所示,我的模型似乎无法正常工作。这是嵌入的3D图的示例,它显示单词聚集在一起并重叠,因此很难区分它们:我怀疑问题在于我的实现而不是绘图函数。importnumpyasnpfromnltk.corpusimpor......
  • 基于SpringBoot的智能购房推荐系统-09040(免费领源码)可做计算机毕业设计JAVA、PHP、爬
    Springboot智能购房推荐系统摘 要近年来随着我国经济的高速发展,房地产业也随之蓬勃发展,尤其是最近国家新出台的房改政策。鼓励居民购房,这对房产公司无疑是一个极好的发展势头。尤为重要的是,近几年随着信息技术和电子商务的快速发展,许多企业都开发了自己房产信息软件。智......
  • Python 基础教学 - 开发规范
    Python基础教学-开发规范一、引言在Python编程中,遵循良好的开发规范是编写高质量、可维护代码的关键。本文将为您详细介绍Python开发中的一些重要规范,帮助您养成良好的编程习惯。二、代码布局缩进使用4个空格进行缩进,避免使用制表符。示例:ifTrue:p......
  • Python基础学习笔记(一)
    文章目录一、下载Python二、变量三、数据类型四、运算符五、语句六、容器类型七、函数function八、常用API九、面向对象类的创建:创建对象:实例成员:实例方法:类成员:静态方法:十、三大特征:封装、继承、多态十一、六大原则:Python基础学习笔记(二)一、下载Python官网:https......
  • 随机森林的可解释性分析(含python代码)
    随机森林的可解释性分析1.引言可解释性的重要性2.随机森林的原理2.1基本原理:2.2随机森林的实现3.随机森林的可解释性分析3.1特征重要性3.2特征重要性3.3SHAP值3.4部分依赖图(PDP)3.5交互特征效应3.6变量依赖图4.结论5.参考文献1.引言在机器学习领域,随机森林......
  • 【Python】模块
    1.模块的概念Python中有一种方法可以把定义放在一个文件里面,并在脚本或者解释器的交互实例中使用它们。这样的文件被称作Python的模块。2.自定义模块在Python中,自定义模块有两个作用,一个作用是规范代码,让代码更容易阅读;另一个作用是方便其他程序使用已经编写好的代码,提高开......
  • 计算机毕业设计-基于python的房屋租赁系统【源码+文档+PPT】
    精彩专栏推荐订阅:在下方主页......