python对象作为函数的参数

python对象作为函数的参数,python,Python,我知道python通过引用传递对象,但为什么下面代码的第二个输出不是10而是3 class a(): def __init__(self, value): self.value = value def test(b): b = a(10) b = a(3) print(b.value) test(b) print(b.value) Python对象按值传递,其中值是引用。行b=a(3)创建一个新对象,并将标签b放在其上b不是对象,它只是碰巧位于对象上的标签。

我知道python通过引用传递对象,但为什么下面代码的第二个输出不是10而是3

class a():
    def __init__(self, value):
        self.value = value

def test(b):
    b = a(10)

b = a(3)
print(b.value)
test(b)
print(b.value)

Python对象按值传递,其中值是引用。行
b=a(3)
创建一个新对象,并将标签
b
放在其上
b
不是对象,它只是碰巧位于对象上的标签。调用
test(b)
时,复制标签
b
,并将其传递到函数中,使函数的本地
b
(其阴影为全局
b
)也成为同一对象上的标签。这两个
b
标签没有以任何方式相互绑定-它们只是碰巧当前位于同一对象上。因此,函数中的
b=a(10)
行只需创建一个新对象,并将本地
b
标签放在该对象上,使全局
b
保持原样。

Python对象按值传递,其中值是一个引用。行
b=a(3)
创建一个新对象,并将标签
b
放在其上
b
不是对象,它只是碰巧位于对象上的标签。调用
test(b)
时,复制标签
b
,并将其传递到函数中,使函数的本地
b
(其阴影为全局
b
)也成为同一对象上的标签。这两个
b
标签没有以任何方式相互绑定-它们只是碰巧当前位于同一对象上。因此,函数中的行
b=a(10)
只是创建了一个新对象,并将局部
b
标签放置在其上,使全局
b
保持原样

  • 您没有从函数返回要放入类的值。这意味着“b”是无关的,不起任何作用。唯一的连接是名称“b”

  • 您需要重新分配值“b”才能调用该类

  • 类别a():

  • 您没有从函数返回要放入类的值。这意味着“b”是无关的,不起任何作用。唯一的连接是名称“b”

  • 您需要重新分配值“b”才能调用该类

  • 类别a():


    内部
    test
    可能重复您有局部变量
    b
    ,它最初分配了
    a(3)
    ,但后来分配了
    a(10)
    ,但不会更改分配给外部
    b
    的对象。可能运行它以查看显示引用的可视化。内部
    测试的可能重复项
    您有局部变量
    b
    ,它最初分配
    a(3)
    ,但后来分配
    a(10)
    ,但它不会更改分配给外部
    b
    的对象。也许可以运行它来查看显示引用的可视化。这个机制像Java吗?这个机制像Java吗?
    def __init__(self, value):
            self.value = value
    
    def test(b):
        b = a(10)
        return b
    
    b = a(3)
    print(b.value)
    
    b = test(3)
    print(b.value)