首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python字符串不是不可变的吗?那么为什么a+“”+b可以工作呢?

Python字符串不是不可变的吗?那么为什么a+“”+b可以工作呢?
EN

Stack Overflow用户
提问于 2012-02-01 22:56:56
回答 18查看 138.1K关注 0票数 125

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

我尝试了以下代码:

代码语言:javascript
复制
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不应该阻止赋值吗?我可能漏掉了什么。

有什么想法吗?

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2012-02-01 23:00:03

第一个a指向字符串“狗”。然后,您更改了变量a以指向新字符串"Dog eats treats“。你实际上并没有改变“狗”这个字符串。字符串是不可变的,变量可以指向任何它们想要的东西。

票数 204
EN

Stack Overflow用户

发布于 2012-02-01 22:59:15

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

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

考虑一下:

代码语言:javascript
复制
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.
票数 64
EN

Stack Overflow用户

发布于 2012-02-01 22:59:17

变量只是一个指向对象的标签。该对象是不可变的,但如果愿意,您可以使标签指向完全不同的对象。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9097994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档