【发布时间】:2017-02-19 08:44:55
【问题描述】:
我只是在测试字符串是否不可变,因为我有点累了 :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变量赋值的区别)。为什么是语法错误,他们只是在做同样的事情?
【问题讨论】:
-
语法错误意味着python在其语法中不能接受这个输入。
-
有很多代码会产生语法错误。尝试用尽可能少的代码产生相同的错误,忘记递归和字符串。
-
在递归调用
x()之后尝试打印y,你会发现它没有改变。您在x()函数调用中使用关键字 argy而不是分配给y。
标签: python variables recursion variable-assignment