最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python中怎么比较两个字符串是否相同

    正文概述    2020-07-22   235

    python中怎么比较两个字符串是否相同

    在python中,判断两个变量是否相等或一样,可以使用==或者is来判断;判断不一样可以使用 is not。

    示例

    python中怎么比较两个字符串是否相同

    使用注意事项

    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是等价的.

    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

    真实情况是当执行.操作符的时候,实际是生成了一个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中怎么比较两个字符串是否相同

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元