python闭包函数
2021/12/25 22:07:16
本文主要是介绍python闭包函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、闭包函数的概念
闭包 = 一个函数 + 外部封闭的作用域
闭包函数的特征:
- 函数中嵌套一个函数
- 外层函数rertun返回 内层函数
- 内层函数有引用 外部作用域 的非全局变量
def funcB1(): x = 100 def funcB2(): c = x * 2 print(c) return funcB2 # 调用闭包函数 返回的结果就是一个闭包 # 闭包 = 一个函数 + 外部封闭作用域 # 封闭作用域的值在外面是没有办法进行修改的 res = funcB1() print(res) res() # 运行结果 # <function funcB1.<locals>.funcB2 at 0x000001B8B48BC310> # 200
因为作用域的原因,在函数外部就无法拿到函数中的变量和内部函数。通常我们需要使用函数中的变量时,才去将变量返回的办法。同理,在使用内部函数时,我们也可以将函数名作为返回值返回。 这是闭包最常用的方式。
二、如何判断是否是闭包函数
函数名__closure__ 在函数是闭包函数时,返回一个cell元素;不是闭包时,返回None。
输出cell:
def funcB1(): x = 100 def funcB2(): c = x * 2 print(c) print(funcB2.__closure__) return funcB2 # 调用闭包函数 返回的结果就是一个闭包 # 闭包 = 一个函数 + 外部封闭作用域 # 封闭作用域的值在外面是没有办法进行修改的 res = funcB1() res() # (<cell at 0x0000027678A1C640: function object at 0x0000027678A0C310>, <cell at 0x0000027678A1CB50: int object at 0x00000276782655D0>)
输出None:
name = 'python' def func(): def inner(): print(name) print(inner.__closure__) # None return inner f = func() f() # None # python
这篇关于python闭包函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Python编程基础
- 2024-11-01Python 基础教程
- 2024-11-01用Python探索可解与不可解方程的问题
- 2024-11-01Python编程入门指南
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南