为什么函数可以改变外部的对象?

时间:2017-07-15 15:54:35

标签: python python-3.x variables object namespaces

见下面的例子:

def func(arg):
    print(id(arg))
    df = pd.DataFrame(arg)
    print(id(df))
    df['b'] = [4,5,6]

a = pd.DataFrame( {'a' : [1,2,3]})

print(a, id(a))

func(a)

print(a)
   a
0  1
1  2
2  3 
681924702104
681924702104
681924718944
   a  b
0  1  4
1  2  5
2  3  6

调用函数后为什么要更改?我不明白,因为他们有不同的身份。解决这个问题的正确程序是什么?

1 个答案:

答案 0 :(得分:2)

pd.DataFrame()接受一个参数,指定是否应该复制数据。默认值为False。如果您需要副本,请将其设置为True

df = pd.DataFrame(arg, copy=True)

这将修复你的例子。