python对象作为函数的参数
我知道python通过引用传递对象,但为什么下面代码的第二个输出不是10而是3python对象作为函数的参数,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不是对象,它只是碰巧位于对象上的标签。
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
保持原样
内部
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)