python允许在函数内部定义另一个函数,这种函数称为内嵌函数或者内部函数。

1、例

>>> def a():        ## a外层函数,b为内层函数
    print("hello world!")
    def b():
        print("xxxxx!")
    b()

    
>>> a()
hello world!
xxxxx!
>>> b()         ## 函数b的作用域都在函数a内,别的地方无法调用函数b。
Traceback (most recent call last):
  File "<pyshell#1032>", line 1, in <module>
    b()
NameError: name 'b' is not defined
>>> def a():
    print("hello world!")
    def b():
        print("xxxxxx!")
    return b()

>>> a()
hello world!
xxxxxx!
>>> def a():
    print("hello world!")
    def b():
        print("xxxxxx!")
    return b

>>> a()
hello world!
<function a.<locals>.b at 0x000002224043B550>
>>> a()()
hello world!
xxxxxx!

 

2、在嵌套函数中,内部函数可以引用外部函数的局部变量

>>> def a():
    x = 100
    y = 200
    def b():
        print("x value = ",x)
        print("y value = ",y)
    return b()

>>> a()
x value =  100
y value =  200

 

 

3、python允许在函数内部定义另一个函数,这种函数称为内嵌函数或者内部函数。

示例:

>>> def a(x):
    print("x = ",x)
    def b(y):
        print("y = ",y)
        print("x * y = ",x * y)
    return b

>>> a(3)(8)
x =  3
y =  8
x * y =  24
>>> a(5)(9)
x =  5
y =  9
x * y =  45

 

>>> def a(x):
    print("x = ",x)
    def b(y):
        print("y = ",y)
        print("x + y = ", x + y)
        print("x - y = ", x - y)
        print("x * y = ", x * y)
        print("x / y = ", x / y)
    return b

>>> a(8)(2)
x =  8
y =  2
x + y =  10
x - y =  6
x * y =  16
x / y =  4.0