【问题标题】:Is python function passing by reference? [duplicate]python函数是通过引用传递的吗? [复制]
【发布时间】: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


【解决方案1】:

sorted() 的输出是一个不同的全新列表。和论据不一样。

【讨论】:

    猜你喜欢
    • 2014-08-07
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多