当前位置:  开发笔记 > 编程语言 > 正文

Python在交互模式下不是实习字符串?

如何解决《Python在交互模式下不是实习字符串?》经验,为你挑选了1个好方法。

在Python交互式会话中:

In [1]: a = "my string"

In [2]: b = "my string"

In [3]: a == b
Out[3]: True

In [4]: a is b
Out[4]: False

In [5]: import sys

In [6]: print(sys.version)
3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609]

另一方面,运行以下程序时:

#!/usr/bin/env python

import sys


def test():
    a = "my string"
    b = "my string"
    print(a == b)
    print(a is b)


if __name__ == "__main__":
    test()
    print(sys.version)

输出是:

True
True
3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609]

为什么a is b在上述两种情况下会有不同的结果?

我知道这个答案(当然还有的差异之间==is运营商!这是个问题点!),但不ab同一对象也是在第一种情况?(interpeter?)因为它们指向相同的(不可变的)字符串?



1> 小智..:

这是由字符串实习引起的.见这个问题的另一个例子.

在您的示例中,CPython实现模块中的字符串常量,但不在REPL中.


有关详细信息,请参阅[this](http://stackoverflow.com/a/25267946/2076832)答案.
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有