Python 就地更改变量

标签 python python-2.7

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

我如何编写自己的函数来更改变量而无需重新分配?

最佳答案

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

所以:

>>> 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]

关于Python 就地更改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22675506/

相关文章:

python - 有效地从 2 个大型 DataFrame 收集数据并将其合并到 numpy 数组中

python - 使用 python 设置批处理变量

python - 导入 urllib 和导入 http.client 时出错

python-2.7 - 保存 ndarray 时出现 ValueError

python - 在字典中压缩两个列表,但在键中保留重复项

python - 如何在不渲染模板的情况下将python变量传递给flask中的html

python - 错误: [Errno 32] Broken pipe in python code

python - 打印/输出时如何从列表中删除方括号

python - argparse 在解析其他选项后调用一个函数

python - SpaCy 括号标记化 : pairs of (LRB, RRB) 未正确标记化