Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
re.sub()如何变异不可变的Python字符串?_Python_Python 3.x_String_Object_Immutability - Fatal编程技术网

re.sub()如何变异不可变的Python字符串?

re.sub()如何变异不可变的Python字符串?,python,python-3.x,string,object,immutability,Python,Python 3.x,String,Object,Immutability,这里,字符串flight\u details字符串已更改,但其id未更改,下面是代码及其输出: import re flight_details = "Flight Savana Airlines a2134" print(id(flight_details)) print(re.sub(r"Flight", r"Plane", flight_details)) print(id(flight_details)) print(re.sub(r"Plane", r"Akash", fligh

这里,字符串
flight\u details
字符串已更改,但其id未更改,下面是代码及其输出:

import re

flight_details = "Flight Savana Airlines a2134"
print(id(flight_details))

print(re.sub(r"Flight", r"Plane", flight_details))
print(id(flight_details))

print(re.sub(r"Plane", r"Akash", flight_details))
print(id(flight_details))
输出:

27264016
Plane Savana Airlines a2134
27264016
Flight Savana Airlines a2134
27264016
Flight Savana Airlines a2134
1442959741216
Flight Savana Airlines a2134
1442959741216
Plane Savana Airlines a2134
1442959741456
id(航班详细信息)
在调用
re.sub后返回相同的值,因为
re.sub
不会更改传递给它的字符串的值(
flight\u details
)。它返回一个新字符串

例如:

import re

flight_details = "Flight Savana Airlines a2134"
print(flight_details)
print(id(flight_details))

re.sub(r"Flight", r"Plane", flight_details)
print(flight_details)
print(id(flight_details))

flight_details = re.sub(r"Flight", r"Plane", flight_details)
print(flight_details)
print(id(flight_details))
输出:

27264016
Plane Savana Airlines a2134
27264016
Flight Savana Airlines a2134
27264016
Flight Savana Airlines a2134
1442959741216
Flight Savana Airlines a2134
1442959741216
Plane Savana Airlines a2134
1442959741456

请参阅:

但是字符串的不变性如何呢。当我们试图改变一个字符串时,我被告知我们最终会创建一个新的字符串对象。字符串绝对是不可变的。当您执行flight\u details=re.sub(r“flight”,r“Plane”,flight\u details)时,原始字符串将被丢弃,现在flight\u details引用一个全新的字符串对象。原始字符串对象根本没有更改。flight_details不再引用它,Python的垃圾收集器最终应该会将其从内存中删除。哦,我搞错了,非常感谢。