搜索
写经验 领红包

Pytho函数嵌套(pytho函数嵌套如何执行)

导语:Python | 函数嵌套

函数嵌套概述

函数的嵌套有两种方式:

交叉嵌套回环嵌套

交叉嵌套

交叉嵌套的方式是在本函数中调用同一级或上一级函数的嵌套方法:

def func(foo):    print(1)    foo()    print(3)    def a():    print(1)b = func(a)print(b)

输出的结果为:

113None

首先,程序会将 Python 文件中顶格的代码运行。函数 func 和 a 都是先开辟内存空间存储起来,但不会被执行。当程序走到赋值操作时,会先执行等号右边的代码。函数 func 被调用,函数 a 作为参数被传到 func 中。func 函数被执行,顺序也是从上往下,先是把 1 打印出来,然后调用参数 foo。需要注意的是,foo 是形参,实参是 a。调用 foo 在此时的意思是调用函数 a。函数 a 被调用,又打印出一个 1 来。函数 a 运行完毕,返回至函数 func,继续执行下面的代码,打印出 3 来。最后,函数默认返回 None,赋值给 b。程序运行结束。

再看下面的代码:

def func():    print(1)    print()    print(2)def foo(b):    print(3)    ss = b()    print(ss)    print(4)def f(a,b):    a(b)f(foo,func)

输出的结果为:

31我太难了2None4

跟上面一样,先将函数全都加载到新开辟的内存空间中,但不执行。到最后 f 函数被调用,foo 和 func 两个函数作为参数被传到函数 f 中。在函数 f 中,foo 函数被调用,参数为 func 函数。进入到 foo 函数,先打印 3。到赋值语句,先执行等号右边的代码,函数 func 被调用。在函数 func 中,打印三个内容 1、我太难了 和 2。函数默认返回值为 None,被赋值给 ss。打印 ss 就是打印 None。最后打印 4,然后返回到函数 f,再返回到全局空间。执行结束。

回环函数

回环函数就是在函数中调用下级函数的嵌套方法:

def func(a,b):    def foo(b,a):        print(b,a)    return foo(a,b)  相当于在func函数体中写了这么一个 a = 100 操作    print(locals())func(100)

最后来一道思考题,请确定下列函数输出的结果:

a = 10def func():    a = 5    def foo():        a = 3        def f():            nonlocal a            a = a + 1            def aa():                a = 1                def b():                    global a                    a = a + 1                    print(a)                b()                print(a)            aa()            print(a)        f()        print(a)    foo()    print(a)func()print(a)

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小春创作整理编辑!