如果Python语言的函数或者类方法不能类似于C++那样按引用或者指针传递,会不会频繁生成副本?

比如我某个函数要修改一个很大的数据集,然后将数据集作为参数传递,需要生成这一个数据集的副本?

如果函数参数是可变的对象,比如列表字典等,那么参数的传递就是引用,不会自动生成副本。如果确实需要一个参数副本,应使用copy等方法手动生成。下面的代码证明了这一点:函数f的第1个参数是直接引用,第2个参数则传入一个副本。

>>> import copy
>>> x, y = [1,2,3], {'name':'xufive','age':20}
>>> def f(a, b):
	a[0] += 5
	b['age'] += 5

	
>>> f(x, copy.copy(y))
>>> x
[6, 2, 3]
>>> y
{'name': 'xufive', 'age': 20}

我记得也是,可变数据类型是引用传入,而不可变数据类型是副本传入。