本篇文章给大家带来的内容是关于Python中闭包的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
一:简介
函数式编程不是程序必须要的,但是对于简化程序有很重要的作用。
Python中一切都是对象,函数也是对象
a = 1 a = 'str' a = func
二:闭包
闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+环境变量)
如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure),这个是最直白的解释!而且这个变量的值不会被模块中相同的变量值所修改!
三:闭包的作用
少使用全局变量,闭包可以避免使用全局变量
可以实现在函数外部调用函数内部的值:
print(f.__closure__[0].cell_contents)
# 返回闭包中环境变量的值!
模块操作是不能实现的!
# ----------------------------------------------# # 闭包 # ----------------------------------------------# # 函数内部定义函数 def curve_pre(): def curve(): print("抛物线") pass return curve # 不能直接调用函数内部的函数 # curve() func = curve_pre() func() def curve_pre1(): a = 25 # 环境变量a的值在curve1外部 def curve1(x): print("抛物线") return a * x ** 2 return curve1 # 返回了的闭包 f = curve_pre1() result = f(2) print(result) # 当在外部定义变量的时候,结果不会改变 a = 10 print(f(2)) print(f.__closure__) # 检测函数是不是闭包 print(f.__closure__[0].cell_contents) # 返回闭包中环境变量的值! # ----------------------------------------------# # 闭包的实例 # ----------------------------------------------# def f1(): m = 10 def f2(): m = 20 # 局部变量 print("1:", m) # m = 20 print("2:", m) # m = 10 f2() print("3:", m) # m = 10,臂包里面的值不会影响闭包外面的值 return f2 f1() f = f1() print(f.__closure__) # 判断是不是闭包 # ----------------------------------------------# # 闭包解决一个问题 # ----------------------------------------------# # 在函数内部修改全局变量的值计算某人的累计步数 # 普通方法实现 sum_step = 0 def calc_foot(step=0): global sum_step sum_step = sum_step + step while True: x_step = input('step_number:') if x_step == ' ': # 输入空格结束输入 print('total step is ', sum_step) break calc_foot(int(x_step)) print(sum_step) # 闭包方式实现----->少使用全局变量,闭包可以避免 def factory(pos): def move(step): nonlocal pos # 修改外部作用域而非全局变量的值 new_pose = pos + step pos = new_pose # 保存修改后的值 return pos return move tourist = factory(0) print(tourist(2)) print(tourist(2)) print(tourist(2))
以上是Python中闭包的简单介绍(附示例)的详细内容。更多信息请关注PHP中文网其他相关文章!

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

Python3.6环境下加载Pickle文件报错:ModuleNotFoundError:Nomodulenamed...

如何解决jieba分词在景区评论分析中的问题?当我们在进行景区评论分析时,往往会使用jieba分词工具来处理文�...

如何使用正则表达式匹配到第一个闭合标签就停止?在处理HTML或其他标记语言时,常常需要使用正则表达式来�...

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

记事本++7.3.1
好用且免费的代码编辑器