知行编程网知行编程网  2022-08-23 03:00 知行编程网 隐藏边栏  69 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python中怎么比较两个字符串是否相同的相关知识,包括python替换指定字符串,以及python两个字符串相同的部分这些编程知识,希望对大家有参考作用。

如何在python中比较两个字符串

python中,判断两个变量是否相等,可以用==或者is来判断;判断它们是否不同,可以用is not。

示例

如何在python中比较两个字符串

使用注意事项

1、有时候两个字符串打印出来看起来一样,但是判断是False?如果两个字符串的末尾还有其他符号,比如回车'\n',打印的时候找不到,所以需要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函数可以获取对象的内存地址。如果两个对象的内存地址相同,那么这两个对象一定是一个对象。相当于是。

如何在python中比较两个字符串

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

真实情况是,当 .操作符执行后,实际生成了一个代理对象。当 foo.bar 为 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。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享