我不清楚将列表作为参数传递给python中的函数的概念。
我自己尝试过这方面的研究,没有找到足够的资源。
我想实现一个辅助函数,它返回给定列表中的一些随机项。 (在django queryset中)
但是,列表可能包含多行并按值传递给函数可能会导致内存不足状态,如果我错了就纠正我。
我应该如何将列表传递给函数?
答案 0 :(得分:6)
在Python中,有名称和值。赋值语句使名称引用值。赋值永远不会复制,赋值永远不会更改值。它只会更改名称所指的值。将参数传递给函数就像赋值:现在函数中参数的本地名称引用传入的值,并且永远不会复制。这种引用值的名称机制和更改值名称所引用的赋值,对于Python中的所有对象都是相同的,无论其类型如何。
由于可变和不可变的值,这会让人感到困惑。如果将可变值(例如,列表)传递给函数,并更改该值,则引用该值的调用者名称也将看到更改的值。如果将不可变值传递给函数(例如,字符串或数字),则任何人都不能更改该值。
答案 1 :(得分:3)
Python中的所有内容都是标识符。对于列表,您可以将评估策略视为“按引用调用”。它实际上命名为"call by sharing"。
答案 2 :(得分:3)
没有。将列表传递给函数对内存没有任何影响。 Python 不复制列表。
答案 3 :(得分:2)
Ned Batchelder 所说的完整解释:
http://docs.python.org/tutorial/classes.html#python-scopes-and-namespaces