Python向函数传递参数
我对在Python中将列表作为参数传递给函数的概念不是很清楚。
我自己查了一些资料,但没有找到足够的资源。
我想实现一个辅助函数,它可以从给定的列表中返回一些随机项。(在Django的查询集中)
不过,这个列表可能包含很多行,如果把它按值传递给函数,可能会导致内存不足,如果我说错了请纠正我。
那么,我应该如何将列表传递给函数呢?
4 个回答
3
在Python中,所有的东西都是一个标识符。对于列表,你可以把它的评估方式理解为“通过引用来调用”。实际上,这种方式被称为“共享调用”。
3
不,传递一个列表给函数在内存方面没有任何影响。Python 不会 复制这个列表。
6
在Python中,有“名字”和“值”。一个赋值语句就是让一个名字指向一个值。赋值并不会复制值,也不会改变值本身。它只是改变了名字指向的值是什么。当你把一个参数传给一个函数时,就像是赋值一样:此时函数内部的参数名字指向了传入的值,而不会产生复制。这个名字指向值的机制,以及赋值改变名字指向的值的方式,对于Python中的所有对象都是一样的,不管它们是什么类型。
这就有点复杂了,因为有可变值和不可变值的区别。如果你把一个可变值(比如说一个列表)传给一个函数,并且在函数里改变了这个值,那么调用这个函数的地方也会看到这个改变后的值。如果你传入的是一个不可变值(比如字符串或数字),那么这个值就不能被任何人改变。