关于Python踩坑,a = "//" 之后 a is "//" 语句是否为True?

本文深入解析了Python中字符串的内部实现机制,特别是字符串的interning概念,以及在比较字符串时错误使用is运算符可能导致的误解。通过具体案例分析,揭示了在字符串比较时使用is而非==的潜在陷阱,以及转义字符对比较结果的影响。
    这两天踩了个坑,用写LCS的时候,发现

这里写图片描述

程序里面用了这个写法,然后就一直bug.
有点无语.常量的储存类型和变量的储存类型分开了.
is 判断是比较的左右操作数的地址是否相等.如果是同一个对象,则返回True,否则返回False.

这里写图片描述

这里要特别注意,以后变量判断是否等于某一常量的时候,如果使用is,可能永远都是False.

但是遇到个坑,

a = "+"ː a is "+"
a = "\\"ː a is "\\"

两则后面一个语句的bool值是不同的...前者为真,后者为假...

感谢@凯旋冲锋 找到这个blog.link里面的博文讲的很清楚.不过感觉我还是有些不理解...
http://guilload.com/python-string-interning/
这里可能和转义字符有关系.









这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值