Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么函数可以改变外部的对象?_Python_Python 3.x_Variables_Object_Namespaces - Fatal编程技术网

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

Python 为什么函数可以改变外部的对象?,python,python-3.x,variables,object,namespaces,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

请参见下面的示例:

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
为什么在调用函数后会发生更改?我不明白,尤其是因为他们有不同的身份证。解决此问题的正确步骤是什么?

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

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

这将修复您的示例。

Does
df=pd.DataFrame(arg);df['b']=[4,5,6]
modify
arg
?我不熟悉这个类。不确定,但是1:您创建了一个新的
数据框
对象,但它似乎修改了原始数据。或者
df=a.copy()
。但是由于a和df具有不同的标识(因此根据[link](),它们是不同的对象),如何通过向df添加列“b”来更改a?