Discuss / Python / 请教下各位老师

请教下各位老师

Topic source

结合廖老师的讲义,对于默认参数必须不能指向可变对象我是这么理解的,不知道对不对:

可变对象[]给了形参L一个地址,在每次调用函数时,对象的值在上次调用完毕后就发生了变化,对象的地址id并没有变,所以每次[]中都会增加一个‘end’。

我是按照上面这样理解的,但是如果是这样的话。把可变对象放在定义函数的内部是不是也满足这个条件?

def menu():

    L=[]

    L.append('end')

    print(L)

可是每次打印的结果都是正确的了,为什么呢

心33749

#2 Created at ... [Delete] [Delete and Lock User]

放函数里 他就在函数那个区域了 需要设置为形参吧

Loafer_D

#3 Created at ... [Delete] [Delete and Lock User]

你这样定义的话,每次调用函数menu的时候,名为L的list被重新赋值为空list,所以每次的结果都为["end"]


  • 1

Reply