知行编程网知行编程网  2022-11-02 00:00 知行编程网 隐藏边栏  61 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python字符串是如何存储的的相关知识,希望可以帮到处于编程学习途中的小伙伴

Python 通过享元模式在内部存储字符串。 Flyweight模式是一种减少存储空间的优化方法。具有相同字符串内容的两个字符串指向同一个对象,这正是享元模式所做的。

python字符串是如何存储的

python内部存储字符串采用的是享元模式(Flyweight pattern)。

(推荐教程:

Flyweight模式是一种减少存储空间的优化方法。我们知道,具有相同字符串内容的两个字符串实际上指向同一个对象,这正是享元模式所做的。

那么为什么可以使用这种模式呢?学过python的同学应该明白,字符串在python中是不变的类型,就像元组一样。正是由于这个原因,字符串可以采用享元模式。

下面我们来具体分析一下:

用过python的人应该对==和is都不陌生,这里我就介绍一下。

==是用来推断两个东西是否相等,比方:

a = 10。
b = 10;
print(a == b);

输出是true;

再看一个样例:

a = [1,2,3];
b = [1,2,3];
c = [1,2,4];
print(a==b);
print(a==c);

输出各自是 true 和 false 。

再来看 is 。是用来推断同一性而不是同样性。

来看以下的样例:

x = [1,2,3];
y = [1,2,3];
print(x is y);

输出是 false;

而仅仅有:

x = [1,2];
y = x;
print(x is y);

输出是true;

从上面的样例中能够看出 == 和 is 两个的差别之处。

那么问题来了,如果我们把比较换成字符串,结果会不会让你大吃一惊。请参见以下示例:

x = “huan”;
y = x;
print(x == y);
print(x is y);

输出是:

true
true

如今看以下的样例:

x = “huan”;
y = “huan”;
print(x == y);
print(x is y);

输出是:

true
true

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享