Python 通过享元模式在内部存储字符串。 Flyweight模式是一种减少存储空间的优化方法。具有相同字符串内容的两个字符串指向同一个对象,这正是享元模式所做的。
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
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何从python中的字典中获取随机数据09/04
- ♥ python函数的返回值是整数吗?12/10
- ♥ 如何在python中读取所有文件08/28
- ♥ 为什么python要安装到c盘?10/22
- ♥ 如何在python中使用列表计数功能?10/13
- ♥ python捕获异常的原因10/16
内容反馈