【发布时间】:2026-01-27 03:30:01
【问题描述】:
我对以下函数有一个变体:
from random import randint
def assign_a_value_conditionally():
threshold = randint(1,4)
if threshold > 3:
value = "We made it!"
return value
print('before recursion')
assign_a_value_conditionally()
print('after recursion')
a = assign_a_value_conditionally()
如果函数递归,a = None。
如果函数不递归,a = "We made it!"
我预计a 在这两种情况下都等于"We made it!",因为它会随分配返回。
我可以看到发生了什么,但有人可以解释为什么会发生这种情况,并推荐一种设计模式以获得预期的结果吗?
我查看了一堆已经问过的递归问题,我看到的是关于可变对象的问题,所以如果在某处重复,我深表歉意。我也不知道怎么称呼它。
如果我尝试回答,那是因为值返回到函数返回的嵌套中,而不是 print 语句所示的外部函数范围。
但我可以使用更多的解释/讨论。
谢谢。
【问题讨论】: