python中return无返回值详解

def move(n,a,b,c):
    if n==1:
        print(a,'----',c)
        return
    else:
        move(n-1,a,c,b)
        print(a,'----',c)
        move(n-1,b,a,c)
print(move(3,'A','B','C'))

2.无返回值的return,作用是强制结束函数的调用过程,并且返回调用者现场

类似于break的作用

可以理解为强制结束当前调用并且返回之前调用完成的def的frame。

 

 

返回(2,A,C,B)是因为(2,A,C,B)这个frame是已经完成def调用的,(1,C,A,B)还在循环中没结束就return被强制结束了

所以return的是(2,A,C,B)

 

上图的(2,A,C,B)是上一次return回来的值并不是此次循环中上一次完成调用的def模块,所以return的是初次完成调用的(3,A,B,C),可以理解为程序的寄存器上会写上每次完成调用的过程,返回之后就把那次调用当作了一次新的输入。

理解的流程图

 

 


版权声明:本文为weixin_50920579原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。