Python字符串不是不可变的吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (184)

我的理解是Python字符串是不可变的。

我尝试了以下代码:

a = "Dog"
b = "eats"
c = "treats"

print a, b, c
# Dog eats treats

print a + " " + b + " " + c
# Dog eats treats

print a
# Dog

a = a + " " + b + " " + c
print a
# Dog eats treats
# !!!

Python不应该阻止这项任务吗?我可能遗漏了什么。

提问于
用户回答回答于

第一a指向“dog”的字符串。然后你更改了变量a指向一个新字符串“dog eat treats”。你并没有真的改变“dog”的字符串。字符串是不可变的,变量可以指向他们想要的任何东西。

用户回答回答于

字符串对象本身是不可变的。

变量,a,它指向字符串,是可变的。

考虑:

a = "Foo"
# a now points to "Foo"
b = a
# b points to the same "Foo" that a points to
a = a + a
# a points to the new string "FooFoo", but b still points to the old "Foo"

print a
print b
# Outputs:

# FooFoo
# Foo

# Observe that b hasn't changed, even though a has.

扫码关注云+社区

领取腾讯云代金券