【发布时间】:2016-12-18 03:47:05
【问题描述】:
如果我将数据框传递给函数并在函数内部对其进行修改,是传值还是传引用?
我运行以下代码
a = pd.DataFrame({'a':[1,2], 'b':[3,4]})
def letgo(df):
df = df.drop('b',axis=1)
letgo(a)
a 的值在函数调用后不会改变。这是否意味着它是按值传递的?
我也尝试了以下
xx = np.array([[1,2], [3,4]])
def letgo2(x):
x[1,1] = 100
def letgo3(x):
x = np.array([[3,3],[3,3]])
原来letgo2() 确实改变了xx 而letgo3() 没有。为什么会这样?
【问题讨论】:
-
关于 Python 的 pass by assignment 模型的解释,请阅读Facts and Myths about Pythons names and values、FAQ: How do I write a function with output parameters (call by reference)?、SO: How do I pass a variable by reference?。
标签: python pandas pass-by-reference pass-by-value