这里直接运行的结果不应该是[8,6,7,8]吗?
这里直接运行的结果不应该是吗?为什么是def func(x =[],y=):
x.append(8)
y. append(8)
return(x+y)
a,b=,
t=func(x=a)
t=func(y=b)
print(func(),end=";")
不要把列表作为参数默认值,否则作为参数默认值时相同元素的列表地址值是相同的
导致你在 x . append(8)y.append(8) 时,加入的是同一个列表
即:
调用 func(x=a) 函数之前时,x = [] , y = ---> 调用之后 x = , y =
调用 func(x=b) 函数之前时,x = , y = ---> 调用之后 x = , y =
最后你调用 func() 直接返回x = , y = 相加的结果
楼主我调试了下,主要问题是你每次调用的时候入参都会增加一个8{:10_256:}
你可以打个print,有助于你理解每次的参数
def func(x =[],y=):
# x = []
# y =
x.append(8)
# x.append(8)
print('x:',x)
y.append(8)
# y.append(8)
print('y:',y)
z=x+y
return z
a=
b=
t_a=func(x=a)
print(t_a)
t_b=func()
print(t_b)
print(func(),end=";")
我做了下修改,参数不固定为列表,你可以调试下
def func(x,y):
x.append(8)
y.append(8)
return(x+y)
a,b=,
t=func(x=a,y=[])
t=func(x=[],y=b)
print(func(x=[],y=),end=";")
页:
[1]