Python中的对象是什么意思

  介绍

不懂Python中的对象是什么意思?其实想解决这个问题也不难、下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。

<强> Python中的对象

在Python中,<强>一切都是对象强。为了证明,你可以打开一个REPL并探索使用isinstance ():

 Python中的对象是什么意思

在祝辞祝辞,isinstance(1,对象)   真正的   在祝辞祝辞,isinstance(列表(),对象)   真正的   在祝辞祝辞,isinstance(真的,,对象)   真正的   在祝辞祝辞,def  foo ():   ,,,,,,   …   在祝辞祝辞,isinstance (foo,对象)   真正

此代码向您显示Python中的所有内容确实是一个对象。每个对象至少包含三个数据:

<强>参考计数, <强>类型, <强>值

该引用计数为内存管理。要深入了Python中解的内存管理内部。

该类型在CPython层使用,以确保运行时的类型安全性。最后,有值,即与对象关联的实际值。

但并非所有对象都是相同的。您还需要了解另一个重要的区别:<强>不可变对象和可变对象。理解对象类型之间的差异确实有助于阐明Python中的指针。

<强>不可变对象和可变对象

在Python中,有两种类型的对象:

<强>无法更改的不可变对象, <强>可以改变的可变对象。

理解这种差异是在Python中学习指针的第一个关键。以下是常见类型的细分以及它们是否可变或不可变:

Type ,,,不可变的?   int ,,,,,,,,是的   float ,,,,,,是的   bool ,,,,,,,是的   complex ,,,是的   tuple ,,,,,,是的   frozenset ,是的   str ,,,,,,,,是的   list ,,,,,,,没有   set ,,,,,,,,没有   dict ,,,,,,,没有

如您所见,许多常用的基元类型是不可变的。您可以通过编写一些Python来证明这一点。您需要Python标准库中的一些工具:

<强> id() 强返回对象的内存地址。

<强> isTrue 当且仅当两个对象具有相同的内存地址时才返回。

再一次,您可以在REPL环境中使用它们:

在祝辞祝辞x =, 5   在祝辞祝辞,id (x)   94529957049376

在上面的代码中,已分配的x值5来。如果您尝试使用加修改此值,那么您将获得一个新对象:

在祝辞祝辞,x , +,=,, 1,   在祝辞祝辞,x    6,   在祝辞祝辞,id  (x )   94529957049408

即使上面的代码似乎修改了值x,你也会得到一个新对象作为响应。

该str类型也是不变的:

在祝辞祝辞,s =,“real_python"   在祝辞祝辞,id (s)   140637819584048   在祝辞祝辞,s  +=,“_rocks"   在祝辞祝辞年代   & # 39;real_python_rocks& # 39;   在祝辞祝辞,id (s)   140637819609424

同样,操作后年代最终会有不同的内存地址+=?/p>

对于某些对象,+=将转换为__iadd__()(就地添加)。这将修改自我并返回相同的ID。但是,int str并没有这些方法而导致__add__()调用而不是__iadd__ ()。

试图直接改变字符串会年代导致错误:

在祝辞祝辞,s [0],=,“R"   Traceback  (most  recent  call 最后一个):   File 才能“& lt; stdin>“, line  1,拷贝& lt; module>   TypeError: & # 39; str # 39;, object  does  not  support  item 任务

上面的代码失败了,Python表明它str不支持这种突变,这与该str类型是不可变的定义一致。

与可变对象形成对比,例如列表:

在祝辞祝辞,my_list =, (1, 2, 3]   在祝辞祝辞,id (my_list)   140637819575368   在祝辞祝辞,my_list.append (4)   在祝辞祝辞my_list   (1,,2,,3,,4]   在祝辞祝辞,id (my_list)   140637819575368

此代码显示了两种类型对象的主要区别.my_list最初有一个id。即使在4附加到列表后,my_list也具有相同的id。这是因为列表类型是可变的。

证明列表可变的另一种方法是赋值:

在祝辞祝辞,my_list [0],=0   在祝辞祝辞my_list   [0,,2,,3,,4]   在祝辞祝辞,id (my_list)   140637819575368

在此代码中,您my_list将其第一个元素变异并设置为0。但是,即使在此分配之后,它仍保持相同的ID。随着可变和不可变对象的出现,的下一步是理解Python的变量生态系统。

Python中的对象是什么意思