• Python不可变对象


      str是不变对象,而list是可变对象。

      对于不可变对象,比如对str进行操作:

    # 对于list进行操作,list内部的内容是会变化的:
    >>> a = ['c', 'b', 'a']
    >>> a
    ['c', 'b', 'a']
    >>> a.sort()
    >>> a
    ['a', 'b', 'c']
    
    # 而对于不可变对象比如str进行操作:
    >>> a = 'abc'
    >>> a
    'abc'
    >>> a.replace('a', 'A')
    'Abc'
    >>> a
    'abc'
    
    # 把代码改写成下面这样:
    >>> a = 'abc'
    >>> b = a.replace('a', 'A')
    >>> b
    'Abc'
    >>> a
    'abc'

      在上面的示例代码中,要始终牢记的是,a是变量,而‘abc’才是字符串对象。我们经常所说的对象a的内容是‘abc’其实指的是,a本身是一个变量,它指向的对象的内容才是‘abc’。

      当我们调用a.replace('a', 'A')时,实际上调用方法replace是作用在字符串对象‘abc’上的,而这个方法虽然名字叫replace,但却没有改变字符串‘abc’的内容。相反,replace方法创建了一个新字符串‘Abc’并返回,如果我们用变量b指向该新字符串,就容易理解了,变量a仍指向原有的字符串‘abc’,但变量b却指向新字符串’Abc‘了。

      所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

  • 相关阅读:
    Swift
    ios中沙盒
    Mac下安装apk(命令形式)
    iOS 保存异常日志
    android sliding menu
    iOS 苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法)
    iOS应用崩溃日志分析
    iOS 推送
    iOS 修改textholder的颜色
    iOS 7.1 UITapGestureRecognizer 不好用的解决办法
  • 原文地址:https://www.cnblogs.com/lucky-zhangcd/p/9075669.html
Copyright © 2020-2023  润新知