递归调用和变量赋值错误[Python]

时间:2017-02-19 08:44:55

标签: python variables recursion variable-assignment

我只是在玩测试字符串是不可变的因为我有点累了: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变量赋值的差异)。为什么它是语法错误,它们只是做同样的事情?

1 个答案:

答案 0 :(得分:2)

在第一个版本中,您告诉函数您的参数y获取变量y的值+1。如果您的参数名为z,则表示您x(string, z=y+1)

如您所见,y+=1不起作用,您尝试修改变量,而不是为函数指定参数。但+=没有返回任何内容,因此语法确实不正确。