最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python中的对象

    正文概述    2020-05-04   183

    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 "<stdin>", line 1, in <module>
    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中的变量】


    起源地下载网 » Python中的对象

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元