美文网首页我的Python之旅
谈谈Python的常量池

谈谈Python的常量池

作者: resolvewang | 来源:发表于2017-03-29 15:31 被阅读144次

今天,无意中看到知乎上一个关于Java的问题大概是这样的

String a="a";String b="a"; 为什么 a==b 值为 true?

咋的一看,无非就是因为它是字符串常量,它被放到了一个共享的地方,这个地方称为字符串常量池,它保存所有的常量字符串,每个常量只会被保存一份,被所有所有者共享。出于好奇,我也想了解一下Python这方面的知识。以前看过一些资料,我知道Python是有常量池存在的,但是是小整数常量池,比如

a = 1
b = 1
a == b # true
a is b # true
c = 1234
d = 1234
c == d # true
c is d # false

这里也比较好理解,a is b为true是因为a和b都是小整数,它们都放在小整数常量池中, c is d 为false的原因是c和d不在小整数常量池中,那么小整数常量池的范围是多少呢?大概范围是这样的:(-5, 256)

然后再看下面一段代码:

a = 'ab'
b = 'ab'
a == b # true
a is b # true
c = str(100)
d = str(100)
c == d # true
c is d # false

这里我就比较疑惑了,为啥 a is b为true呢?难道Python中也有一个字符串常量池吗?那为什么c is d为false呢?在stackoverflow中找到了一个回答,可以解决我的问题。想通了也比较简单,c 和 d可以类比于java中的这段语法

String c = new String('100');
String d = new String('100');

这里 c和d自然不是同一个对象。

相关文章

  • 谈谈Python的常量池

    今天,无意中看到知乎上一个关于Java的问题大概是这样的 String a="a";String b="a"; 为...

  • java__常量池

    java的常量池分为两种型态:静态常量池和运行常量池 静态常量池: 即class文件中的常量池,这种常量池主要用于...

  • Java 内存—常量池

    Java中的常量池分为两种型态: 静态常量池 运行时常量池 静态常量池 所谓静态常量池是指class文件中的常量池...

  • 细说Java常量池

      Java中的常量池有:class常量池、运行时常量池、String常量池。 为什么要使用常量池?   避免频繁...

  • 字符串常量池

    静态常量池,运行期常量池,字符串常量池 静态常量池 运行时常量池 字符串常量池 问题 结果: 验证new Stri...

  • JVM-常量池

    JVM-常量池 JVM常量池分为 Class文件常量池 运行时常量池 全局字符串常量池 基本类型包装类对象常量池 ...

  • 常量池

    Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。 静态常量池 : *.class文件中的常量池,...

  • 你对常量池够了解吗

    在 java 中,常量池分为以下三种: class 常量池 字符串常量池 运行时常量池 一、class 常量池 1...

  • JVM(六)JVM常量池

    1.常量池类型 Java中的常量池分为三种: 类文件常量池(静态常量池)(The Constant Pool)运行...

  • 【JAVA基础】常量池、字符串字面量、JAVA编译

    1.常量池的概念 分为两大类:静态常量池和运行时常量池。 class文件静态常量池即class文件中的常量池, 指...

网友评论

    本文标题:谈谈Python的常量池

    本文链接:https://www.haomeiwen.com/subject/oaneottx.html