python字符串是如何存储在内存中的

时间:2023-01-04 14:18:44
python字符串是如何存储在内存中的

我想问字符串是如何在内存中存储的,为何每次输出 "ni hao " 的值都不同
希望能讲的深入一点,谢谢各位

3 个解决方案

#1


你这个问题是个很难的问题
在python中给变量赋值和C语言是完全不同的,在python中变量不是容器,只是个标签。
在Python中先创建一个字符串对象,然后把引用地址(也就是id() 得到的值)绑定给一个变量名。
不同的程序块中(在IDLE,python shell中 每一行就算是一个单独程序块)即使相同字符串也是单独创建对象。
在相同程序块中 相同字符串对象会有缓存机制就是引用同一个字符串对象地址绑给不同变量。

#2


line1是一个引用。他指向真正的数据。id就是引用的地址值。所以指向不同的数据引用就会发生变化

#3


引用 1 楼 xpresslink 的回复:
你这个问题是个很难的问题
在python中给变量赋值和C语言是完全不同的,在python中变量不是容器,只是个标签。
在Python中先创建一个字符串对象,然后把引用地址(也就是id() 得到的值)绑定给一个变量名。
不同的程序块中(在IDLE,python shell中 每一行就算是一个单独程序块)即使相同字符串也是单独创建对象。
在相同程序块中 相同字符串对象会有缓存机制就是引用同一个字符串对象地址绑给不同变量。


请看下图:
python字符串是如何存储在内存中的

请教一下,为何空格去掉了,再给line_1赋值,其身份标识就不会改变了;而带有空格符的line_1身份标识上线却是不同的。这是为什么呢~

#1


你这个问题是个很难的问题
在python中给变量赋值和C语言是完全不同的,在python中变量不是容器,只是个标签。
在Python中先创建一个字符串对象,然后把引用地址(也就是id() 得到的值)绑定给一个变量名。
不同的程序块中(在IDLE,python shell中 每一行就算是一个单独程序块)即使相同字符串也是单独创建对象。
在相同程序块中 相同字符串对象会有缓存机制就是引用同一个字符串对象地址绑给不同变量。

#2


line1是一个引用。他指向真正的数据。id就是引用的地址值。所以指向不同的数据引用就会发生变化

#3


引用 1 楼 xpresslink 的回复:
你这个问题是个很难的问题
在python中给变量赋值和C语言是完全不同的,在python中变量不是容器,只是个标签。
在Python中先创建一个字符串对象,然后把引用地址(也就是id() 得到的值)绑定给一个变量名。
不同的程序块中(在IDLE,python shell中 每一行就算是一个单独程序块)即使相同字符串也是单独创建对象。
在相同程序块中 相同字符串对象会有缓存机制就是引用同一个字符串对象地址绑给不同变量。


请看下图:
python字符串是如何存储在内存中的

请教一下,为何空格去掉了,再给line_1赋值,其身份标识就不会改变了;而带有空格符的line_1身份标识上线却是不同的。这是为什么呢~