您现在的位置是:课程教程文章
python中怎么比较两个字符串是否相同
2023-12-18 22:26课程教程文章 人已围观
-
老男孩Python全站开发+AI人工智能 21期Ⅱ
老男孩Python全站开发+AI人工智能 21期Ⅱ02D21内容回顾和补充.mp4 08D21super.mp4 05D21类中特殊方法(二).mp4 09D21异常处理(... -
Python全栈精品课之多线程编程
Python全栈精品课之多线程编程... -
跟着王进老师学开发之Python篇第二季:基
跟着王进老师学开发之Python篇第二季:基课程目标: 跟着王进老师学开发Python系列课程:主要面对Python零基础学员,从... -
Python零基础机器学习
Python零基础机器学习【开发课程目的】 随着人工智能时代到来,人们的工作、生活和学习方式将发...
在python中,判断两个变量是否相等或一样,可以使用==或者is来判断;判断不一样可以使用 is not。
示例
使用注意事项
1.有时候两个字符串打印出来看着一样,但是判断却是False?如果两个字符串末尾有其他符号,比如回车‘\n’,print的时候无法发现的,所以需要strip:
a=a.strip() b=b.strip() if a==b: print "True"
2.有时候==判断是 True ,is 判断却是 False?
这是因为两个字符串来自不同的内存块,内存地址不一样
id() 函数用于获取对象的内存地址。
(ob1 is ob2) 等价于 (id(ob1) == id(ob2)) id函数可以获得对象的内存地址,如果两个对象的内存地址是一样的,那么这两个对象肯定是一个对象。和is是等价的.
3.还有一种情况是两个对象用is判断是False,用id判断却是True。原理比较复杂,如下:
In [1]: def bar(self, x): ...: return self.x + y ...: In [2]: class Foo(object): ...: x = 9 ...: def __init__(self ,x): ...: self.x = x ...: bar = bar ...: In [3]: foo = Foo(5) In [4]: foo.bar is Foo.bar Out[4]: False In [5]: id(foo.bar) == id(Foo.bar) Out[5]: True
真实情况是当执行.操作符的时候,实际是生成了一个proxy对象,foo.bar is Foo.bar的时候,两个对象顺序生成,放在栈里相比较,由于地址不同肯定是False,但是id(foo.bar) ==id(Foo.bar)的时候就不同了,首先生成foo.bar,然后计算foo.bar的地址,计算完之后foo.bar的地址之后,就没有任何对象指向foo.bar了,所以foo.bar对象就会被释放。然后生成Foo.bar对象,由于foo.bar和Foo.bar所占用的内存大小是一样的,所以又恰好重用了原先foo.bar的内存地址,所以id(foo.bar) == id(Foo.bar)的结果是True。
课程教程:python中怎么比较两个字符串是否相同上一篇:python怎样自动提示
下一篇:没有了