美文网首页
python中的可变对象/不可变对象和golang中的值变量/指

python中的可变对象/不可变对象和golang中的值变量/指

作者: 舒小贱 | 来源:发表于2017-12-15 16:50 被阅读0次

    对于golang,我们知道字符串,数组等是值变量,具有值传递的特性;slice,map等是指针变量,具有指针传递的特性。
    对于python,同样有此两种特性的变量:str是不变对象,而list是可变对象。

    在python中,对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如:

    >>> a = ['c', 'b', 'a']
    >>> a.sort()
    >>> a
    ['a', 'b', 'c']
    

    但是对于不可变对象,比如str,对str进行操作的结果就不一样了:

    >>> a = 'abc'
    >>> a.replace('a', 'A')
    'Abc'
    >>> a
    'abc'
    

    虽然字符串有个replace()方法,也确实变出了'Abc',但变量a最后仍是'abc'

    结论:对于不变对象来说,调用对象的所有方法,都不会对不变对象本身的值造成改变,只会返回一个新的修改后的变量。而对于可变对象来说,调用对象的方法或者复制,都会对可变对象本身的值造成改变。

    参考:使用dict和set

    相关文章

      网友评论

          本文标题:python中的可变对象/不可变对象和golang中的值变量/指

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