У меня есть вопрос о том, как 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 я передаю ссылку ans
в строке l.3. Но когда я печатаю оба значения ans
и ret
, ret
не содержит того же значения, что и ans
.
Конечно, я просто вывожу ans
для правильного ответа, но я ожидал, что Python инициализирует переменную ret
и присвоит brackets
ссылку возврата на ret
в строке l.3.
Я запутался, как python передает ссылку через функцию. Пожалуйста, дайте мне знать соответствующие документы или ответ.