python中的对象按照覆盖方式可以分为两类:可覆盖对象和不可覆盖对象:
- 可覆盖对象:list,dictionary
- 不可覆盖对象:int,string,float,tuple
可覆盖对象一旦创建后还可以改变,响应的指向同一个对象引用的变量的内容随之改变;不可覆盖对象一旦创建后就不可以改变,这儿作了详细的解释。
代码实例
对于可覆盖对象
@breakingcoder
def deleteFruit(mylist):
if mylist is not None:
mylist.remove(mylist[0])
fruits = ['apple','peal','banana','orange']
deleteFruit(fruits)
print(fruits)
上述代码的运行结果为:
['peal', 'banana', 'orange']
由于列表是可覆盖对象,函数中对列表的改动会直接影响到列表对象的变动。
对于不可覆盖对象
@breakingcoder
def addNum(mynumber):
mynumber += 2
number = 8
addNum(number)
print(number)
上述代码的运行结果为:
8
由于整型是不可覆盖对象,函数中对对象引用变量的改动世界上不会对原有对象进行改动,而是指向了新创建的对象,随着函数的结束,局部变量也就失去了意义。number依旧指向对象8的地址。