我有一个关于 Python 如何返回值的问题。下面是我练习递归函数的简单python代码。
def brackets(ans, n, cur, open, close):
if len(cur) == n*2:
ans.append(cur) # <---l.1
return ans # <---l.2
if open < n:
brackets(ans, n,cur+"(",open+1,close)
if open > close:
brackets(ans, n,cur+")",open,close+1)
ans = []
ret = brackets(ans, 2, "", 0,0) # <---l.3
print(ans)
print(ret)
=====
return:
['(())', '()()']
None
我想我ans
在 l.1 行修改列表对象并返回它,在 l.2 行,我在 l.3 行传递ans
引用。但是当我同时打印 valueans
和ret
时,ret
不包含与 相同的值ans
。
当然,我只是打印ans
出正确答案,但我希望 Python 初始化变量并在第 l.3 行ret
分配brackets
返回引用。ret
我对python如何通过函数传递引用感到困惑。请让我知道相关文件或答案。