小编典典

数字是否被视为python中的对象?

python

我知道数值在python中是不可变的。我还阅读了Python中的所有对象。我只想知道数字类型是否也是python中的对象。因为如果它们是对象,那么变量实际上是引用变量,对吗?这是否意味着如果我将数字传递给函数并在函数内部对其进行修改,则会创建带有两个引用的两个数字对象?python中有原始数据类型的概念吗?

注意:我也认为它是对象。但是在python导师中进行可视化显示会有所不同:http
://www.pythontutor.com/visualize.html#mode=edit

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

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


阅读 138

收藏
2020-12-20

共1个答案

小编典典

数字类型是对象吗?

>>> 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 += 10a = a + 10,如果有帮助在这方面。

2020-12-20