Python字符串的驻留机制
题目:在交互模式下,下列那个选项中,a,b,c三个变量没有共用同一片内存空间
请在以下选项中找出正确答案:
●A
a = 'panda'
b = 'panda'
c = 'panda'
●B
a = 'panda'
b = "panda"
c = '''panda'''
●C
a = 'panda%'
b = 'panda%'
c = 'panda%'
●D
a = ' '
b = ' '
c = ' '
正确答案: C
答案解析: 在Python中字符串是基本数据类型,是一个不可变的字符序列,Python字符串的驻留机制,是仅保存一份相同且不可变字符串的方法,不同的值存放在字符串的驻留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。
A选项中,三个变量的内容都是一样的,根据驻留机制定义,可知他们指向内存的标识也是一样的。 B选项中,无论是单引号还是双引号、三引号,这都是Python创建字符串的一种方式,不影响内容,他们指向内存的标识也是一样的。 C选项是正确答案,PyCharm等工具对字符串进行了优化处理,所以在PyCharm上运行时,C选项也是可以指向同一片内存空间的,但是题目要求在交互模式下,所以C答案错误。 D选项中,字符串的长度为0或1时,他们指向内存的标识也是一样的。
|