Python 就地更改变量

pia*_*119 7 python python-2.7

我最近正在学习如何random.shuffle在 Python 中使用,我惊讶地发现该函数将变量原地打乱,而没有返回任何内容。这是如何在函数中实现的?查看随机库的源代码没有得到答案。

我如何编写自己的函数来在不重新分配的情况下更改变量?

eri*_*eri 6

因为列表是可变的,所以我是有效的。您不能重新分配任何变量,因为它将是新变量。您不能修改不可变的类型变量。您可以修改可变变量。

所以:

>>> def addone(x):
...     x += 1
>>> a = 2
>>> addone(a)
>>> a
2
>>> def addone(x):
...     x.append(1)
... 
>>> l=[2]
>>> addone(l)
>>> l
[2, 1]
>>> def addone(x):
...     x = x + [1]
... 
>>> li=[2]
>>> addone(li)
>>> li
[2]
Run Code Online (Sandbox Code Playgroud)