使用断点结合debug更好的查看函数的运行步骤,对于刚接触函数比较蒙圈的是很有用的。
下面使用实例来分解步骤;
def test1(): #第1步读取函数 print('in the test1') #第7步这一步可以注释掉更容易看一些 return "end" #第8步最终结果 def test(): #第2步读取函数 print('in the test')#第4步打印结果 return test1 #第5步返回执行结果给第3步 res=test() #第3步触发调用函数 print(res()) #第6步打印第3步的返回值的函数
结果:
in the test in the test1 end
用例二:
name = "白月初" #第1步 def foo(): #第2步 name="涂山红红" #第4步 def bar(): #第5步 name="涂山蓉蓉" #第9步 print(name) #第10步 return bar #第6步 res=foo()#第3步 print(res)#第7步返回return值的地址 res() #第8步返回return值bar的函数
结果
<function foo.<locals>.bar at 0x000001EF8A754510>
涂山蓉蓉
用例三:
白月初" #第1步 def foo(): #第2步 name="涂山红红" #第4步 def bar(): #第5步 name="涂山蓉蓉" #第8步 def tt(): #第9步 print(name) #第13步 return tt #第10步 return bar #第6步 bar=foo() #第3步 tt=bar() #第7步 print(tt) #第11步 tt() #第12步 # foo()()()#这个可以替代第3,7,11,12的效果, 也就是想求出最终嵌套的结果有几层加几个括号
结果
<function foo.<locals>.bar.<locals>.tt at 0x000001B4D90147B8>
涂山蓉蓉