本篇内容主要讲解“python语言中的 == 和 is 有什么不同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python语言中的 == 和 is 有什么不同”吧!
对于这两个运算符的理解,可以在很大程度上体现一个人对python的精通程度,说道他们的不同,可以总结为以下两点== 是比较关系运算符,is 是身份运算符== 比较两个对象的值是否相等,is 比较的是两个对象的内存地址是否相同在实际应用中,对这两个运算符的使用,往往让人感到困惑不解程序输出的结果对于a == b 这个表达式的结果,应该没有什么异议,分歧和不解出现在第二个表达式a is b, is 身份运算符比较的是两个对象的内存地址,显然,变量a 与b所指向的列表的内存地址是不同的。
在你使用赋值语句时,解释器会在内存中创建一个列表[1], 这个创建过程发生了两次,他们的内存地址不同,正因a 和b是两个不同的列表,他们才能分别存储数据而不会互相影响,所以,理解这个问题的关键在于,当a = [1] 这行代码被执行时,在内存中创建了一个新的列表[1]。内存池好奇心强的人,可能会立即写代码实验,来验证前面所讲程序输出结果内置函数id()可以返回对象的内存地址,他们果然不相同,但是 香港云主机,事情总有蹊跷,下面的代码就无法用前面所讲的理论来解释程序输出结果按照前面所讲,两次执行赋值语句,应该在内存中创建出两个1啊,他们的内存地址应该不同,a is b 的结果应该是False,但实际运行代码得到的却是True,这是为何?不同于列表,int类型数据是不可变数据,两个变量同时指向一个int类型数据不会产生意外的后果,因此python使用了内存池技术,python的设计者认为-5到256这个范围内的整数是经常被使用的,不应该频繁的创建和销毁,因此建立了一个内存池,-5到256之间的数只会存在一个,任何时候使用他们,所用的都是内存池中的那一个,不会重新创建,因此他们的内存地址相同。交互式解释器如果你仍然保持强烈的好奇心,那么你可能会继续试验,来验证前面的理论程序输出结果又一次感到困惑,不是说好了-5到256在内存池中,现在用的是257,为啥a is b的结果也是True?这段代码,想要得到理论的结果,必须在python交互式解释器中执行,如果你是在pycharm中执行,或者通过python命令执行脚本的方式执行,所得结果都为True,原因在于通过这些方式运行时,在编译阶段会做优化,因为实在没必要创建出两个257。如果在python交互式解释器中运行这段代码,就可以见证理论的正确性到此,相信大家对“python语言中的 == 和 is 有什么不同”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
这篇文章给大家分享的是有关win10系统玩游戏闪退怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、点击任务栏中的搜索图标,输入windows功能,点击启用或关闭windows功能。2、在窗口中,找到旧版组件,点击打开,勾选D…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。