1.闭包的定义和使用
当返回的内部函数使用了外部函数的变量就形成了闭包
闭包可以对外部函数的变量进行保存,还可以提高代码的可重用性
实现闭包的标准格式:
- 1.函数嵌套
- 2.内部函数使用外部函数的变量或参数
- 3.外部函数返回了内部函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | ''' 当返回的内部函数使用了外部函数的变量就形成了闭包 闭包可以对外部函数的变量进行保存,还可以提高代码的可重用性 实现闭包的标准格式: 1.函数嵌套 2.内部函数使用外部函数的变量或参数 3.外部函数返回了内部函数 ''' # 定义一个闭包 def outer(): # 外部函数 n = 1 def inner(): # 内部函数 print (n) # 外函数返回内函数的引用(不用带括号哈) return inner outer() # 调用外函数不会执行内函数 # inner() # 不能直接调用内函数 ret = outer() # 把内函数的引用给ret print (ret) ret() # 闭包的使用 def person(name): def say(msg): print (f '{name} say: {msg}' ) return say tom = person( 'Tom' ) rose = person( 'Rose' ) tom( 'Hello' ) rose( 'World' ) |
2.闭包内函数修改外函数定义的变量(加nonlocal)
1 2 3 4 5 6 7 8 9 10 11 12 | def outer(): n = 1 def inner(): nonlocal n # 不加会报错,列表、字典、元祖不用加 n = n + 10 print (n) print (n) # 输出1 return inner fun = outer() fun() # 输出11 fun() # 输出21 |
到此这篇关于Python闭包的使用方法的文章就介绍到这了,希望可以对你有所帮助。
来源:https://www.weidianyuedu.com