Python-16-函数嵌套_闭包

  1. 定义

    闭包:将一个函数嵌套在另一个函数中时,外层函数返回值为内层函数,且内层函数使用了外层函数的变量时,就产生了闭包

    优点:实现了局部函数,且局部函数可以多次调用;可以对函数内的 局部变量进行调用,即内层函数可以调用外层函数的变量

    缺点:当不进行隔离时,即内层函数调用了外层函数的变量时,外层函数在结束后不会回收其变量,浪费了内存

  2. 【闭包】:实现局部函数的多次调用

     def get_password():
         password=input('input password')
         def encode_password(secret=4):
             for i in range(secret):
                 res=str(i).join(password)
             return res
         return encode_password
         
     #【测试1】
     fc=get_password()  # 输入 admin 一次
     r=fc()
     print(r) # 输出 a3d3m3i3n3
     r=fc()
     print(r) # 输出 a3d3m3i3n3
     
     #【测试2】
     fc=get_password()  # 输入 admin 一次
     r=fc(5)
     print(r) # 输出 a4d4m4i4n
     fc=get_password()  # 输入 wqqw 一次
     r=fc(6)
     print(r) # 输出 w5q5q5w
    
  3. 【闭包缺点】

    外部函数局部变量若在内部函数里使用时,则在调用完外部函数后不会回收局部变量
    即,上例password不会回收
    当发现内部函数中不使用时,则会回收password(学会隔离)

     def get_password():
         password=input('input password')
         def encode_password(secret=4,pa=password):
             for i in range(secret):
                 res=str(i).join(pa)
             return res
         return encode_password
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值