热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python中的对象是什么意思

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

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

Python中的对象

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

Python中的对象是什么意思

>>> isinstance(1, object)
True
>>> isinstance(list(), object)
True
>>> isinstance(True, object)
True
>>> def foo():
...     pass
...
>>> isinstance(foo, object)
True

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

参考计数、类型、

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

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

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

不可变对象和可变对象

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

无法更改的不可变对象、可以改变的可变对象。

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

Type    Immutable?
int         Yes
float       Yes
bool        Yes
complex     Yes
tuple       Yes
frozenset   Yes
str         Yes
list        No
set         No
dict        No

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

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

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

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

>>> x = 5
>>> id(x)
94529957049376

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

>>> x  + =  1 
>>> x 
6 
>>> id (x )
94529957049408

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

该str类型也是不变的:

>>> s = "real_python"
>>> id(s)
140637819584048
>>> s += "_rocks"
>>> s
'real_python_rocks'
>>> id(s)
140637819609424

同样,操作后s最终会有不同的内存地址+=。

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

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

>>> s[0] = "R"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'str' object does not support item assignment

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

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

>>> 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。这是因为list类型是可变的。

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

>>> my_list[0] = 0
>>> my_list
[0, 2, 3, 4]
>>> id(my_list)
140637819575368

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

感谢你能够认真阅读完这篇文章,希望小编分享Python中的对象是什么意思内容对大家有帮助,同时也希望大家多多支持编程笔记,关注编程笔记行业资讯频道,遇到问题就找编程笔记,详细的解决方法等着你来学习!


推荐阅读
author-avatar
欧阳俊俊2502921727
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有