当前位置:   article > 正文

Python中的嵌套函数_简单嵌套函数 python

简单嵌套函数 python

嵌套函数的定义:
如果在一个函数的内部还定义了另一个函数(注意: 是定义,不是引用!),这个函数就叫嵌套函数。外部的我们叫它外函数,内部的我们叫他内函数。
*

1、最简单的嵌套函数(不带有参数)

def outer_func():
    x=1
    def inner_func():
        result=x+1
        print(result)
    return inner_func
f1=outer_func()#获得的只是返回的inner_func()的引用,是一个地址。并没有执行返回的引用
print(f1)#引用的输出为一个地址。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输出结果:

<function outer_func.<locals>.inner_func at 0x000001C9DEDDA2F0>
  • 1

改写:

def outer_func():
    x=1
    def inner_func():
        result=x+1
        print(result)
    return inner_func
f1=outer_func()
f1()#得到Iner_func的引用后,并执行了该函数。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输出如下:

2
  • 1

2、带有参数的嵌套函数

(1)外函数带有参数

def outer_func(x):
    def inner_func():
        print(x+1)
    return inner_func

f1 = outer_func(1) # 返回inner函数对象
print(f1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果如下:

<function outer_func.<locals>.inner_func at 0x000001C9DEE6BD90>
  • 1

执行返回的内参数的引用:

def outer_func(x):
    def inner_func():
        print(x+1)
    return inner_func

f1 = outer_func(1) # 返回inner函数对象
f1()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果:

2
  • 1

(2)内函数带有参数

def outer_func():
    def inner_func(x):
        print(x+1)
    return inner_func

f1 = outer_func() # 返回inner函数对象
print(f1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果如下:

<function outer_func.<locals>.inner_func at 0x000001C9DEE6BF28>
  • 1

执行返回的内函数的引用:注意加上内函数的参数!

def outer_func():
    def inner_func(x):
        print(x+1)
    return inner_func

f1 = outer_func() # 返回inner函数对象
f1(10)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

执行结果如下:

11
  • 1

(3)内外函数都含有参数

def outer_func(x):
    def inner_func(y):
        print(x+y)
    return inner_func

f1 = outer_func(1) # 返回inner函数对象,必须加入外函数参数。
print(f1)#打印的是inner_func(y)的引用(地址)。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果如下:

<function outer_func.<locals>.inner_func at 0x000001C9DEDDA488>
  • 1

调用内函数额引用:

def outer_func(x):
    def inner_func(y):
        print(x+y)
    return inner_func

f1 = outer_func(1) # 返回inner函数对象
f1(20)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果如下:

21
  • 1

进一步扩展:
当我们将外函数的变量x换成被装饰函数对象(func),内函数的变量y换成被装饰函数的参数,我们就可以得到一个通用的装饰器:

def decorator(func):
    def inner(*args, **kwargs):
        add_other_actions()
        return func(*args, **kwargs)
    return inner
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/585310
推荐阅读
相关标签
  

闽ICP备14008679号