数字类型是对象吗?
>>> isinstance(1, object)
True
显然他们是。:-)。
请注意,您 可能 需要object
稍微调整一下心理模型。在我看来,您正在考虑将其object
视为“可变”的东西- 并非如此。实际上,我们需要将python名称视为对对象的引用。该对象可以保存对其他对象的引用。
name = something
在此评估右侧-所有名称都解析为对象,并且表达式(对象)的结果由“名称”引用。
def foo(x):
x = 2
z = 3
foo(z)
print(z)
我们期望在这里发生什么?好吧,首先我们创建函数foo
。接下来,我们创建对象3
并通过name引用它z
。之后,我们查找z
引用的值并将该值传递给foo
。输入后foo
,该值将由(本地)名称引用x
。然后,我们创建对象2并通过本地名称引用它x
。注意,x
与全局z
无关- 它们是独立的引用。仅仅因为他们在输入函数时就引用了同一对象,并不意味着他们必须始终引用该函数。我们可以使用赋值语句随时更改名称所引用的内容。
请注意,与+ =您的例子可能看起来复杂的事情,但你能想到的a += 10
是a = a + 10
,如果有帮助在这方面。