最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Python中闭包的简单介绍(附示例)

来源:懂视网 责编:小采 时间:2020-11-27 14:20:59
文档

Python中闭包的简单介绍(附示例)

Python中闭包的简单介绍(附示例):本篇文章给大家带来的内容是关于Python中闭包的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一:简介 函数式编程不是程序必须要的,但是对于简化程序有很重要的作用。 Python中一切都是对象,函数也是对象 a =
推荐度:
导读Python中闭包的简单介绍(附示例):本篇文章给大家带来的内容是关于Python中闭包的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一:简介 函数式编程不是程序必须要的,但是对于简化程序有很重要的作用。 Python中一切都是对象,函数也是对象 a =

本篇文章给大家带来的内容是关于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))

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

Python中闭包的简单介绍(附示例)

Python中闭包的简单介绍(附示例):本篇文章给大家带来的内容是关于Python中闭包的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一:简介 函数式编程不是程序必须要的,但是对于简化程序有很重要的作用。 Python中一切都是对象,函数也是对象 a =
推荐度:
标签: 介绍 简单 示例
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top