1 默认参数 :def getList(ch,sum = []) 其中 sum = [] 就是默认形参,而且形参如果不再重新指定,每次调用,形参不会重新赋值,都是第一次赋值,不会改变
2 可变对象 这个对象内存地址不变,但是内容可以变
#可变对象作为默认实参
def getList(ch,sum = []):
sum.append(ch)
return sum
'''
print(getList('a'))
print(getList('b'))
print(getList('c'))
'''
#调用3次getList ,使用默认的sum = [] 看看什么结果
getList('a')
getList('b')
getList('c')
print(getList('d'))
#结果是['a','b','c','d'],说明每一次追加字符都是加到1个sum里面,
#不是想象的每调用1次getList,sum就会重新赋值1次
#也就是默认参数开始赋值了1次,以后如果不重新指定新值,不会改变,调用多次都不会刷新赋值,就是只赋值第一次
##仅仅针对可变对象才能看出来结果
####可变对象就是 在对象地址不变的情况下,可以改变里面的值???
class test(object):
age = 10
def setAge(self,age):
self.age = age
def getAge(self):
return self.age
c = test()
def classTest(ch , obj = c):
obj.age = obj.age+ch
return obj.age
classTest(5)
print(classTest(10))## 因为obj只指向对象c,所以每调用1次,age就会往上加1次
##如果对obj重新赋值
print(classTest(3,obj = test())) //最终只打印出来13了