结合廖老师的讲义,对于默认参数必须不能指向可变对象我是这么理解的,不知道对不对:
可变对象[]给了形参L一个地址,在每次调用函数时,对象的值在上次调用完毕后就发生了变化,对象的地址id并没有变,所以每次[]中都会增加一个‘end’。
我是按照上面这样理解的,但是如果是这样的话。把可变对象放在定义函数的内部是不是也满足这个条件?
def menu():
L=[]
L.append('end')
print(L)
可是每次打印的结果都是正确的了,为什么呢
放函数里 他就在函数那个区域了 需要设置为形参吧
你这样定义的话,每次调用函数menu的时候,名为L的list被重新赋值为空list,所以每次的结果都为["end"]
Sign in to make a reply
用户6174369584
结合廖老师的讲义,对于默认参数必须不能指向可变对象我是这么理解的,不知道对不对:
可变对象[]给了形参L一个地址,在每次调用函数时,对象的值在上次调用完毕后就发生了变化,对象的地址id并没有变,所以每次[]中都会增加一个‘end’。
我是按照上面这样理解的,但是如果是这样的话。把可变对象放在定义函数的内部是不是也满足这个条件?
def menu():
L=[]
L.append('end')
print(L)
可是每次打印的结果都是正确的了,为什么呢