为什么函数在嵌套函数中不返回 after else 语句?


def test1():
def test2():
if False:
return 1
else: return 2
test2()

我不知道为什么,但是这个函数没有返回它应该返回的2。但当我们这样做时:

def test1():
def test2():
if False:
return 1
else: print(2)
test2()

它在屏幕上打印2。为什么会发生这种情况?

PS:我知道如果if条件是False,我们不需要这个else来返回2。但我很好奇,因为如果我们使用这个test2作为非嵌套函数,它会毫无问题地返回2。

test1调用test2,但本身不返回任何内容,因此它隐式返回None。你似乎是想把电话还给test2:

def test1():
def test2():
if False:
return 1
else: 
return 2
return test2() # Here!