【发布时间】:2019-04-23 07:58:36
【问题描述】:
我有一个 pandas 数据框“df”,我在其上应用了几个函数。 我不想更改原始数据框的值。 我所有的功能都是这样的:
def func(x):
# do some stuff with x
return x
y = func(x=df)
我没有在函数中引用 df 变量。但是变量无论如何都会改变。有人可以向我解释为什么会这样以及如何避免吗?
【问题讨论】:
-
Python 是通过引用传递的。
df是可变的。您将对df的引用传递给正在对其进行变异的方法。如果您想保留原件,请发送一份df -
@rdas Python 不是按引用传递的。 Python 使用称为call by sharing 的评估策略。这不是一个众所周知的名字,它有时被称为“赋值调用”,或者如果在 Java 社区中,“所有值都是引用的值调用”。不管你想怎么称呼它,它都是not call-by-reference。此处引用调用的显着特点是调用者可以看到对参数的赋值,这在Python中不会发生
标签: python pandas function dataframe variables