zoukankan      html  css  js  c++  java
  • python中对象的可变与不可变

    在python中一切皆对象,对象是对数据的抽象。

    所有对象有三个要素:类型、标识、值。类型决定对象可以支持哪些操作;标识指的是对象的内存地址,每个对象有唯一的地址,通过id内建函数可以求出地址;值从字面上看是对象的内容,但是应该理解为对内容的绑定关系。绑定也有说成引用、指向。

    对象一旦被创建,它的类型和标识是不变的,根据值的绑定关系是否可变分为可变对象和不可变对象。

    如果“值”理解为对象的内容容易产生疑惑。如元组是不可变对象,但是如果元组的元素包含可变对象,那元组的内容是可以改变的,因为可变对象的值可以改变。

    那元组为什么说是不可变的对象,理由是元组对已经绑定的可变对象的绑定关系是不可变的,就是元组里的索引一旦绑定了一个对象,就不能修改这个绑定,不能再将这个索引绑定到其它对象,同样就容易理解可变对象了,可变对象值可变指的是内容的绑定关系是可变的,如列表,列表的索引所绑定的对象是可以修改的。

    通过例子来理解:

    tuple_a = (1,[1,2,3])

    list_a = [1,2,3]

    tuple_a是一个包含两个元素的元组,有两个索引即tuple_a[0]和tuple_a[1],这两个索引绑定分别整数对象1和列表对象[1,2,3],不可变指的是不能修改tuple_a[0]和tuple_a[1]这两个的绑定关系,这两个索引只能指向已经绑定的1和[1,2,3]这两个对象,不能对这两个索引进行赋值操作来修改绑定。

    list_a是一个包含三个元素的列表,三个索引绑定了三个整数,这三个绑定是可以任意修改的,任意修改绑定指向其它对象,支持索引的赋值操作。

    今天不自律,明天不自由
  • 相关阅读:
    第五节13读取配置中的连接字符串 简单
    第五节 8_手机归属地查询案例 简单
    第五节 8登陆练习操作 简单
    第五节 21类型化DataSet 简单
    PHP XML操作类DOMDocument 简单
    第十节 1ASP.Net简介及学习方法 简单
    第五节 8注入漏洞与参数化查询 简单
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误............ 简单
    第五节 17DateStr 简单
    第五节 19可空数据类型 简单
  • 原文地址:https://www.cnblogs.com/buddy916/p/12591669.html
Copyright © 2011-2022 走看看