首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中x += x与x=x+x的差异

Python中x += x与x=x+x的差异
EN

Stack Overflow用户
提问于 2017-06-13 02:16:30
回答 2查看 207关注 0票数 3

代码第一:

代码语言:javascript
复制
# CASE 01
def test1(x):
    x += x
    print x

l = [100]
test1(l)
print l

CASE01输出:

代码语言:javascript
复制
[100, 100]
[100, 100]

没关系!因为我(名单)是可变的。

然后,

代码语言:javascript
复制
# CASE 02
def test2(x):
    x = x + x
    print x

l = [100]
test2(l)
print l

CASE02输出:

代码语言:javascript
复制
[100, 100]
[100]

虽然差别仍然可以理解。在x = x + x方式中,最左边的x已经被创建/分配为一个新的。

但是为什么呢?

如果x += xx = x + x在定义上是一样的,但是为什么他们有两个不同的成就呢?这两方面的细节是如何进行的?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-13 02:20:03

x += x在引擎盖下调用append,这会使原始变量发生变异。

x = x + x正在创建一个test2本地的新变量,并设置该值,这不会影响原始x

票数 6
EN

Stack Overflow用户

发布于 2017-06-13 02:20:05

我想你搞不懂2号案子到底在做什么。参数未被修改。不管它的名称是x,您为函数创建了一个新的局部变量。

所以你也可以这么做

代码语言:javascript
复制
def test2(l):
    x = l + l
    print x

其中,l可能是函数外部的变量,但它不是相同的(从技术上讲,是的,它是参数)

顺便说一句,你也可以把列表相乘。

代码语言:javascript
复制
In [1]: [100, 200]*2
Out[1]: [100, 200, 100, 200]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44511335

复制
相关文章

相似问题

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