浅谈python中的“ ==” 与“ is”、还有cmp

总之,比较内容相等使用 ‘==’

1、is" 是用来比较 a 和 b 是不是指向同一个内存单元,而"=="是用来比较 a 和 b指向的内存单元中的值是不是相等

2、python有一个叫小整数对象池的东西,python为了优化速度,会把【-5,256】之间的数据提前存放在小整数对象池中,程序中只要用的【-5,256】之间的数据不会再重新创建一份,都是指向对象池中的同一份数据,除了这个区间之外的整数数据,每次使用时系统都会重新申请一块内存,用来存储数据,这样之前的现象也就不奇怪了。

3、对于纯字母的字符串,测试情况显式,是同一块内存

4、对于特殊符号,及标点符号又是另一种情况

    

5、说下cmp,这个也是比较内容相等,等同于==,但是python3.x版本废弃了,建议不用了

参考:

1、http://blog.csdn.net/kobebryantlin0/article/details/73391584

原文地址:https://www.cnblogs.com/shengulong/p/8269700.html

时间: 2024-10-29 04:51:02

浅谈python中的“ ==” 与“ is”、还有cmp的相关文章

浅谈python中的递归

python 浅谈 递归函数 最近在自学一些python,找了些资料.自己慢慢研究到了递归函数这一章,碰到个很经典的例子.汉诺塔的移动.一开始尝试自己写的时候发现,这东西怎么可能写的出来.但是看到别人写出来以后发现,这东西真的能写出来. 本着借鉴的目的想去分析一下别人写的东西.觉得很有意思想给大家分享一下,如果有误请大家指正首先大家可以先自己想想如何能写出来. 先说一下:所谓的递归,我认为就是不断重复调用.直到return 出当前的递归循环.在我拆分的过程中,大家不妨先自己想一下结果,然后看一下

浅谈Python中的编码规则

注:本人用Python3.4作为学习版本,以下学习心得只适用于Python3.4. 之前拜读了金角大王Alex关于编码的解答,收获颇多.特此致谢,以下仅谈一谈作为一个初学者,对编码的理解. 我所了解的编码,大致分为两类:第一类是支持中文的编码集:第二类是支持英文的编码集.至于别国的编码集,暂且不做讨论. 常见编码:ASCII:Unicode:UTF-8:big5,:GB2312:GBK:GB18030 接下来,我对以上编码进行分类: 只支持英文和特殊字符的编码:ASCII ASCII是基于拉丁字

浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod)

我们先来简单谈谈python类中一般方法.静态方法和类方法的区别. 1.类中的一般方法 一般方法在定义的时候,需要有表示类实例的参数(通常以self表示,例如def foo(self,arg1,arg2--)),一般方法不能通过类名.方法名()来调用,必须先创建类的实例,然后通过实例.方法名()来调用. 2.类中的静态方法 类中的静态方法用"@staticmethod"来修饰,静态方法在定义的时候,不需要表示类的实例,可想类外的方法定义一样.静态方法可以通过类名.方法名()和实例.方法

浅谈python中得import xxx,from xxx import xxx, from xxx import *

在python中import跟from import都是用来导入的,但是导入的机制不同 1.import xxx:导入模块,或者文件夹,对于调用模块或者文件夹中子模块的变量或者函数,需要使用"模块".XX来调用 2.from xx import xx:导入的是函数或者变量,类,可以直接使用xx 3.from xx import *:导入xx中得全部"公开"变量,属性,公开指的是不是以"_"开头,除非模块或包中的"__all__"

浅谈python中处理时间的模块

我们知道,Python提供了三种时间函数,时间模块 time.基本时间日期模块 datetime 和日历模块 Calendar. 一.time模块 1.在time模块中,可以用三种表现形式来表示时间,分别是时间戳.格式化时间字符串和结构化时间: 1).时间戳,通过time.time()获得 >>> time.time() 1545027641.4434128 2).格式化时间字符串,通过类似于time.strftime("%Y-%m-%d %H:%M:%S")这样的表

浅谈python中字典

1.字典的定义方式有以下: a=dict(one=1,two=2,three=3) b={'one':1,'two':2,'three':3} c=dict(zip(['one','two','three'],[1,2,3])) d=dict([('two',2),('one',1),('three',3)]) e=dict({'three':3,'one':1,'two':2}) 其中这四种定义方式完全等效,有一点需要牢记,标准库中所有的映射类型都是通过字典(dict)来实现,其中只有可散列(

浅谈Python中with(上下文管理器)的用法

例子一 首先来看一段代码: class Foo(object): def __init__(self): print('实例化一个对象') def __enter__(self): print('进入') def __exit__(self, exc_type, exc_val, exc_tb): print('退出') obj = Foo() with obj: print('正在执行') 上面代码执行结果为: 实例化一个对象 进入 正在执行 退出 结论1 我们知道,实例化Foo,得到obj对

浅谈python中selenium库调动webdriver驱动浏览器的实现原理

最近学web自动化时用到selenium库,感觉很神奇,遂琢磨了一下,写了点心得. 当我们输入以下三行代码并执行时,会发现新打开了一个浏览器窗口并访问了百度首页,然而这是怎么做到的呢? 1 from selenium import webdriver 2 driver = webdriver.Chrome() 3 driver.get('http://www.baidu.com') 首先我们来看一下selenium库的结构: 很显然,selenium就是一个软件包,里面有两个一级子包,commo

浅谈python中的引用和拷贝问题

一.引用 a = ['a', 'b', 'c'] b = a print(id(a)) print(id(b)) 135300560 135300560 可以看到,变量a 和 b 的 id是完全一样的,这就说明a和b是同时指向内存的同一个区域的,即b随a的变化而变化. a = ['a', 'b', 'c'] b = a a[1] = 'd' print(b) b[2] = 'e' print(a) ['a', 'd', 'c'] ['a', 'd', 'e'] 二.浅拷贝 浅拷贝只是复制了的父对