python 函数的嵌套

在 Python 中,函数的嵌套可以发生在几种不同的情况下,这些情况包括:

1. 函数嵌套在函数内部:

在一个函数内部定义另一个函数,内部函数通常只在外部函数中可见。
 

 def outer_function():
       def inner_function():
           # 内部函数的实现
           pass
       # 外部函数的实现
       inner_function()

举例:

def outer_function(x):
    print("外部函数参数 x =", x)

    def inner_function(y):
        print("内部函数参数 y =", y)

    inner_function(x * 2)  # 将外部函数参数传递给内部函数

outer_function(5)  # 调用外部函数

outer_function​ 接受一个参数 ​x​,并将其值传递给内部函数 ​inner_function​。在调用 ​outer_function(5)​ 时,实际上会调用 ​inner_function(5*2)​,内部函数的参数值为外部函数参数值的两倍。

2. 函数作为返回值:

一个函数可以返回另一个函数,以及返回一个函数名或者 Lambda 表达式。 

   def outer_function():
       def inner_function():
           return "这是内部函数"
       return inner_function
   
   result = outer_function()
   print(result())

 举例:

 


3. 函数嵌套在类中:

在类的内部定义函数,同样可以在函数中再定义其他函数。
   

   class MyClass:
       def outer_method(self):
           def inner_method():
               # 内部方法的实现
               pass
           # 外部方法的实现
           inner_method()

举例:

class MyClass:
    def outer_method(self):
        print("这是外部方法")

        def inner_method():
            print("这是内部方法")

        inner_method()  # 在外部方法中调用内部方法

# 创建类实例
my_instance = MyClass()
# 调用外部方法
my_instance.outer_method()

 

定义了一个类 ​MyClass​,其中包含了一个外部方法 ​outer_method​ 以及一个在外部方法内部定义的内部方法 ​inner_method​。当创建类的实例后,可以通过该实例调用外部方法 ​my_instance.outer_method()​。

4. 闭包(Closure):

在一个函数内定义并引用了外部函数的局部变量,形成一个闭包。
 

   def outer_function(x):
       def inner_function(y):
           return x + y
       return inner_function

   add_five = outer_function(5)
   result = add_five(3)
   print(result)

举例:

def outer_function(x):
    def inner_function(y):
        return x + y
    return inner_function

# 创建闭包
add_five = outer_function(5)

# 使用闭包
result = add_five(3)
print(result)

将外部函数 ​outer_function(5)​ 的返回值赋给了变量 ​add_five​,这个变量实际上就是一个闭包,其中包含了外部函数中的变量 ​x​ 的取值。之后,我们调用闭包 ​add_five(3)​,传入参数 3,并实现了对外部函数参数和内部参数的相加操作。

5.函数作为返回值和闭包(Closure)具体区别:

  1. 函数作为返回值:

    • 函数作为返回值是指一个函数内部可以创建并返回另一个函数。当外部函数调用时,会返回内部的函数对象,而不是函数的执行结果。
    • 返回的函数与外部函数完全脱离,不再持有外部函数作用域中的状态信息。
    • 返回的函数需要在外部函数中重新调用才能执行。
  2. 闭包(Closure):

    • 闭包是一种特殊的函数,它能够记住并访问其创建时的环境中的变量值,即使这些变量在创建后已经不再存在。
    • 闭包是在函数内部定义函数,并返回该内部函数的情况。
    • 闭包允许函数保持对定义时环境的引用,从而在之后的调用中可以继续使用这些变量的值。

 一个很好得例子:

def outer_function(x):
    def inner_function(y):
        if y == 1:
            print("y = 1")
        elif x == 1 and y == 1:
            print("x == 1 and y == 1")

    return inner_function  # 返回函数对象而非立即执行

result_func = outer_function(3)  # 获取返回的函数对象
result_func(1)  # 调用返回的函数并传入参数

​​​​​​​

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子边缘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值