面试题答案
一键面试Python字符串不可变特性简述
在Python中,字符串一旦创建,其值就不能被改变。这意味着无法直接修改字符串中某个字符,若要改变字符串内容,需创建新的字符串对象。例如:
s = 'hello'
# 以下操作会报错,因为字符串不可变
# s[0] = 'H'
在函数传参方面的影响
当字符串作为参数传递给函数时,函数接收到的是字符串对象的引用。由于字符串不可变,函数内部对这个引用指向的字符串对象进行操作,不会影响原始字符串。例如:
def modify_string(s):
s = s + ' world'
return s
original = 'hello'
new = modify_string(original)
print(original) # 输出 'hello'
print(new) # 输出 'hello world'
这里modify_string
函数中对s
的操作创建了新的字符串对象,原original
字符串不受影响。
在内存管理方面的影响
由于字符串不可变,相同值的字符串在内存中可能会被复用。例如:
s1 = 'hello'
s2 = 'hello'
print(id(s1) == id(s2)) # 通常会输出True,说明s1和s2指向同一块内存地址
这有助于节省内存空间。同时,因为字符串不可变,在多线程环境下可以安全地共享字符串对象,无需额外的同步机制来防止数据竞争。