【发布时间】:2015-12-15 22:25:57
【问题描述】:
我对从函数内部更改(变异或附加)变量有点困惑。
作为参考,我发现了这个关于functions that mutate the argument 的问题。它描述了在数组上这样做:
def add_thing(a):
a.append(2)
my_a = [1]
append_two(my_a)
my_a
>>> [1,2]
我们使用 += [2] 得到相同的结果
但是,如果我们用字符串或整数尝试同样的事情:
def add_world (s):
s += " world"
my_str = "hello"
add_world(my_str)
my_str
>>> "hello"
它不会改变,整数也一样,比如:
def add_one(i):
i += 1
x = 1
add_one(x)
x
>>> 1
我的问题是:
-
我应该如何识别我可以在数组等函数中改变哪些对象,以及我需要直接分配哪些对象?
-
为什么 += 运算符没有像我预期的那样工作?我相当确定它是 my_var = my_var + 事物的简写,它可以在函数中正常工作。
【问题讨论】:
-
仔细阅读此内容,最好阅读两遍。它会为你解决一些问题。 robertheaton.com/2014/02/09/…
-
谢谢大家,我很确定这是一个很好的领域,我只是无法挖掘任何具体的东西。
标签: python function methods immutability mutable