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====================
三、闭包使用的注意事项
-
修改外部变量 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的伙伴可以多多交流