我只是在玩测试字符串是不可变的因为我有点累了:D并且做了这个
def x(string = "a", y = 0):
if y == 5:
return
else:
string += "x"
print(string)
x(string, y = y + 1)
print(string)
x()
我只想知道为什么会这样,但
def x(string = "a", y = 0):
if y == 5:
return
else:
string += "x"
print(string)
x(string, y += 1)
print(string)
x()
不起作用(递归调用中y变量赋值的差异)。为什么它是语法错误,它们只是做同样的事情?
答案 0 :(得分:2)
在第一个版本中,您告诉函数您的参数y
获取变量y
的值+1。如果您的参数名为z
,则表示您x(string, z=y+1)
。
如您所见,y+=1
不起作用,您尝试修改变量,而不是为函数指定参数。但+=
没有返回任何内容,因此语法确实不正确。