gpt4 book ai didi

Python - 按值和按引用函数参数

转载 作者:行者123 更新时间:2023-12-01 01:19:53 25 4
gpt4 key购买 nike

抱歉,如果标题不准确,不知道如何正确命名。问题是。如果我执行此代码:

num = 1

def test_func2(arg):
arg = 10

test_func2(num)
print(num)

num 显然会保留 1但如果我对对象做类似的事情

class TestClass:

def __init__(self):
self.one = 1
self.two = 2


test_obj = TestClass()


def test_func(arg):
arg.one = 10

test_func(test_obj)
print(test_obj.one)

test_obj.one 的值将更改为 10。为什么整数按值传递,而用户定义的对象按引用传递?

最佳答案

在第一种情况下,num 指的是值为1 的整数对象。将其传递给函数会分配 arg 来引用值 1相同整数对象,但随后 arg被重新分配给一个值为 10 的新整数对象。 num 仍然引用值为 1 的原始整数对象。

在第二种情况下,test_obj 被分配了新的 TestClass 实例的值。将其传递给函数会将 arg 分配给相同 TestClass 实例。对象本身被更改,并且 argtest_obj 仍然引用同一个对象,因此即使在函数返回之后,test_obj “看到”变化。

关于Python - 按值和按引用函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53929453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com