【发布时间】:2020-06-20 22:14:28
【问题描述】:
我有一个关于 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
我想我修改了 l.1 行上的 ans 列表对象并将其返回,然后在 l.2 行上,我通过了 l.3 行上的 ans 引用。
但是当我同时打印值ans 和ret 时,ret 不包含与ans 相同的值。
当然,我只是打印 ans 以获得正确答案,但我希望 Python 初始化变量 ret 并在第 l.3 行分配 brackets 返回对 ret 的引用。
我对 python 如何通过函数传递引用感到困惑。请让我知道相关文件或答案。
【问题讨论】:
标签: python call-by-value