十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容介绍了“python字符串驻留是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
成都创新互联公司是专业的长白网站建设公司,长白接单;提供网站设计制作、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行长白网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
先看下面这段代码
>>> a = 'apple'
>>> b = 'apple'
>>> a is b
True
返回结果看起来没毛病
再来看这段:
>>> a = 'apple!'
>>> b = 'apple!'
>>> a is b
False
这个结果是不是有点诡异
前后两个字符串仅仅是一字之差,结果完全不同。
不信你可以自己测试一下
为了理解这段代码的区别,里面涉及到一个概念,叫做“字符串驻留”,英文叫string intern。
python中万物皆对象,某些情况下,解释器遇到两个看起来长的一毛一样的对象时会做一些优化
例如上面例子中的第一段代码,a 和 b 的值都是 apple
,当解释器准备创建第二个字符串”apple”时,解释器会去驻留内存中查找是否已经存在“apple”对象,如果有就不在创建新的对象了,两人共享一个老婆,哦不对,是共享一个对象。
这就是字符串驻留的概念。
所以 a 和 b 这两个变量共享了同一个对象,因此 is
运算后返回结果为 True
。
对于简单的字符串,系统中可能大量重复存在,这样的好处就是节省内存。驻留内存这个策略在java中也存在。
但并不是所有的字符串有会放进驻留内存中,如果都驻留的话,内存会爆炸。只有符合如下规则才有可能被驻留
长度为 0 或者 1 的字符串被驻留.
字符串中只包含字母,数字或下划线时将会驻留。
字符串必须是编译时的常量字符串
例如下面的c用join方法生成的字符串就不会驻留
>>> a = "apple"
>>> c = "".join(['a','p','p','l','e'])
>>> a is c
False
“python字符串驻留是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!