python3,函数引用传递,闭包

                                   函数引用传递,闭包的使用及特点和思路过程

大家好,今天来和大家主要讲讲闭包的使用。


先和大家讲一下基础知识,这样方便看懂接下来的代码。


函数引用传递

def test1():
    print("--- in test1 func----")

# 调用函数
test1()

# 引用函数
ret = test1

print(id(ret))
print(id(test1))

#通过引用调用函数
ret()

运行结果为:

--- in test1 func----
140212571149040
140212571149040
--- in test1 func----

由上述代码可以知道,函数名只是函数代码空间的一个引用,当函数名赋值给另一个对象的时候,就是引用传递。


闭包

# 外层函数
def func_out(funcout):
    print("---调用外层函数---")
    # 内层函数,在函数内部再定义一个函数,而且内部函数还用到了外部函数的变量,那么将这个函数以及用到的一些外部变量称之为闭包
    def func_in(funcin):
        print("---调用内层函数---")
        return funcout * funcin
    # 返回func_in() 也就是返回闭包结果
    return func_in

# 给func_out()函数中的 funcout 赋值 10
func_out = func_out(10)

# 注意,这里的20,其实是给 func_in()函数的 funcin 赋值
print(func_out(20))

运行结果为:

---调用外层函数---
---调用内层函数---
200

闭包的执行过程:

闭包的特点:

1.嵌套函数

2.外层函数的返回值是内层函数的函数名

3.外层函数要有参数能够被内层函数使用

闭包的优缺点:

优点:节省电脑的资源,提高代码的复用率

缺点:由于闭包引用了外部函数的参数,所以导致外部函数的参数没有及时释放,导致消耗内存。

总结:

函数名只是函数代码的引用,当函数名赋值给一个变量的时候,其实就是引用传递。

闭包就是一个嵌套的函数,在外层函数运行的时候,内层函数才开始被定义,然后将内层函数的引用,传递给函数外的对象

内部函数和使用的外部函数提供的变量构成的整体称为闭包。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值