码迷,mamicode.com
首页 > 其他好文 > 详细

对象变动

时间:2018-06-14 15:00:19      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:append   div   class   ret   可变   element   列表   bye   针对   

 

python中可变意味着可以被改动,不可变意味着不能被改动,也就是常量

 

foo=[hi]
print(foo)#[‘hi‘]

bar=foo
bar+=[bye]
print(foo)#[‘hi‘,‘bye‘]
这是因为对象的可变性,每当你将一个变量赋值为另一个可变类型的变量时,对这个数据的任意改动会同时反映到这两个变量上去。新变量只不过是
老变量的一个别名而已,这个情况只是针对可变数据类型,看例子
def add_to(num,target=[]):
    target.append(num)
    return target

print(add_to(1))
print(add_to(2))
print(add_to(3))

这是因为列表的可变性,在python中当函数被定义时,默认参数只会运算一次,而不是每次被调用时都会重新计算,所以不要定义可变类型的默认参数

# 改进版
def add_to(element,target=None):
    if target is None:
        target=[]
    target.append(element)
    return target

#现在每当你在调用这个函数不传入target参数时,一个新的列表会被创建
print(add_to(4))
print(add_to(4))
print(add_to(4))

 

对象变动

标签:append   div   class   ret   可变   element   列表   bye   针对   

原文地址:https://www.cnblogs.com/z-x-y/p/9182026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!