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

How can re.sub() mutate immutable Python strings?

这里,string flight_details string 改变了,但它的 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

id(flight_details) returns 调用后的值相同 re.sub 因为 re.sub 不会更改您传递给它的字符串的值 (flight_details)。它 returns 一个新字符串。

例如:

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))

输出:

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

参见:https://docs.python.org/3/library/re.html#re.sub