Python

Python的基础知识之闭包

2020-03-07  本文已影响0人  摸着石头过河_崖边树

一、什么是闭包

闭包:在函数嵌套的条件下,内层函数引用外包变量, 内层函数使用外部函数的返回值

tmpdir__17_9_6_10_48_05.jpg

闭包的格式:

def outerFunc(a):
    def innerFunc(b):
        print(a + b)
return innerFunc
newFunc = outerFunc(10)  //返回函数
newFunc(2) //调用函数

二、闭包使用场景

外层函数根据不同参数,生成不同功能的函数

 def line_config(content, length):
     def line(str):
          print(str * (length // 2) + content + str * (length // 2))
 return line
createLine = line_config('abc', 40)
createLine("+")
createLine("-")
createLine("=")
结果:
  ++++++++++++++++++++abc++++++++++++++++++++
  --------------------abc--------------------
  ====================abc====================

三、闭包使用的注意事项

  1. 修改外部变量 nonlocal 申明非局部的num

    def outerFunc():
         num = 10
       def innerFunc():
            nonlocal num
            num = 23
            print('内层的---', num)
     innerFunc()
     print('外层的---', num)
     return innerFunc
     newFunc = outerFunc()
     newFunc()
     结果:
       内层的--- 23
       外层的--- 23
       内层的--- 23
    

2.函数的内部变量参数对应的值是在函数调用时候确定

def outterFunc():
    funs = []
    for i in range(1, 4):
        def innerFunc():
            print(i)
    funs.append(innerFunc)
return funs
newFuncs = outterFunc()
newFuncs[0]()
newFuncs[1]()
newFuncs[2]()
'''
结果
3
3
3
'''

如果需要了解更多Python知识,请查看
Python的基础知识之生成器
Python的基础知识之装饰器
Python的基础知识之迭代器

最后赠言

学无止境,学习Python的伙伴可以多多交流

上一篇下一篇

猜你喜欢

热点阅读