【发布时间】:2017-06-12 12:16:18
【问题描述】:
有人告诉我python函数是通过引用传递的,这是一个例子
def append_element(some_list, element):
some_list.append(element)
data = [3, 1, 2]
append_element(data, 4)
print(data)
[3,1,2,4]
所以原来的data 变了。让我感到困惑的是
y = sorted(data)
print(y)
[1,2,3,4]
print(data)
[3,1,2,4]
如果python函数确实是引用传递,那么为什么在这个函数调用sorted()之后,data没有改变?
【问题讨论】:
-
Python 不通过引用传递。
-
我正在阅读附录中的“Python for Data Analysis”一书,第390页。另外,如果它没有通过引用,那么如何解释第一个示例?
-
Python 使用的参数传递模型现在很常见,但名字并不好。它有时被称为“按对象调用”或(特别是对于 Java 人员)“按值传递,但您必须记住,您传递的值实际上是一个引用”。我通常会向人们指出以下解释:nedbatchelder.com/text/names.html
-
我已经开始使用call by sharing这个词了。
-
@user2357112 该链接非常好。谢谢!
标签: python function pass-by-reference