作用域笔记

   使用断点结合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>
涂山蓉蓉

 

posted @ 2018-04-15 16:50  重铸根基  阅读(109)  评论(0编辑  收藏  举报