在python中,数字被认为是对象吗?

2024-05-19 01:34:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道在python中数值是不可变的。我还读过python中的每件事是如何成为一个对象的。我只想知道数字类型是否也是python中的对象。因为如果它们是对象,那么变量实际上就是引用变量,对吗?这是否意味着,如果我将一个数字传递给一个函数并在函数内修改它,那么将创建两个带有两个引用的number对象?python中是否有原始数据类型的概念?在

注意:我也认为它是物体。但是在python中可视化tutor说的不同: http://www.pythontutor.com/visualize.html#mode=edit

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

还是可视化工具的缺陷?在


Tags: 对象函数testhttp概念类型number原始数据
2条回答

Python中所有的都是一个对象,它包括数字。没有“原始”类型,只有内置类型。在

然而,数字是不变的。当您对一个数字执行操作时,您正在创建一个新的数字对象。在

是数值类型对象吗?在

>>> isinstance(1, object)
True

显然是的。:-). 在

注意,你可能需要稍微调整一下你的心理模型。在我看来,你认为object是“可变”的,事实并非如此。实际上,我们需要将python名称视为对对象的引用。该对象可能包含对其他对象的引用。在

^{pr2}$

在这里,计算右手边的所有名称都被解析为对象,表达式(对象)的结果由“name”引用。在

好的,现在让我们考虑一下当你把某个东西传递给一个函数时会发生什么。在

def foo(x):
   x = 2

z = 3
foo(z)
print(z)

我们希望在这里发生什么?首先,我们创建函数foo。接下来,我们创建对象3,并用名称z引用它。之后,我们查找z引用的值并将该值传递给foo。输入foo时,该值由(本地)名称x引用。然后我们创建对象2并通过本地名x引用它。注意,x与全局z无关,它们是独立的引用。仅仅因为它们在你输入函数时引用了同一个对象,并不意味着它们必须一直引用函数。我们可以使用赋值语句在任何时候更改名称引用的内容。在

注意,您使用+=的示例可能会使事情复杂化,但是您可以将a += 10视为a = a + 10,如果它在这个上下文中有帮助的话。有关+=的更多信息,请查看:When is "i += x" different from "i = i + x" in Python?

相关问题 更多 >

    热门问题