美文网首页
Python immutable and mutable

Python immutable and mutable

作者: Dumplingsrush | 来源:发表于2017-11-21 10:41 被阅读0次

    主要内容转载自他人csdn博客
    知识点:python中,万物皆对象。python中不存在所谓的传值调用,一切传递的都是对象的引用,也可以认为是传址。

    一、可变对象和不可变对象

    Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变。
    不可变(immutable):int、字符串(string)、float、(数值型number)、元组(tuple)
    可变(mutable):字典型(dictionary)、列表型(list)
    e.g:

    >>> i=73
    >>> a=i
    >>> i+=2
    >>> i
    75
    >>> a
    73
    
    20140902164438953.png

    如图所示,当i+=2时,不可变对象的特征没有变,变的只是创建了新对象,改变了变量的对象引用。同理我们创建新的变量a指向i时,它也创建了自己的新对象,所以不受l的修改而修改


    再举一个可变对象的例子
    e.g.:

    >>> m=[5,9]
    >>> a=m
    >>> a
    [5, 9]
    >>> m.append(6)
    >>> m
    [5, 9, 6]
    >>> a
    [5, 9, 6]
    
    20140902165215796.png

    这里我们对list m做了修改,因为list为可变对象,所以它没有创建新对象和改变对象引用,它只是修改了引用对象。同时我们让一个新变量a指向m,因为m的引用对象发生了改变,所以a的引用对象也发生了改变。


    这里注意区分两种可变不可变

    immutable and mutable指的是上面的讲解,而有时候说list可变而tuple不可变指的是tuple一旦初始化就不能修改,它没有像list一样的append(),insert()这样的方法。

    相关文章

      网友评论

          本文标题:Python immutable and mutable

          本文链接:https://www.haomeiwen.com/subject/idpivxtx.html