Python闭包执行时值的传递方式实例分析
作者:有一种宿命叫无能为力 时间:2021-09-22 14:43:50
本文实例分析了Python闭包执行时值的传递方式。分享给大家供大家参考,具体如下:
代码中有问题和问题的解释。
#!/usr/bin/python
#coding: utf-8
# 判断一个人是否及格,如果满分150,则90及格,如果满分100,则60及格
# 开始的疑惑:当fun函数执行完以后,对应的val的值就应该消失,但是,
# 当下面代码再次调用f(60)的时候(这个f()函数就是fun_c()函数)
# 却能够打印出val的值???
def fun(val):
'val是得到的分数'
# 打印此时存储的val的地址
print("%x" % id(val))
def fun_c(passline):
'passline是及格线'
if val >= passline:
print("通过")
else:
print("不及格")
return fun_c
f = fun(89) # f就是fun_c函数
# 利用__closure__打印出fun_c()函数的属性,可以发现f中第一个元素的id值和val的id值地址相同
# 这说明如果引用了外部的变量(enclosing变量)的话,会将这个变量添加到函数属性中
# 当再次进行查找(即f(60))的时候,并不是到代码中去查找,而是到函数属性中去查找
# 也就是上面的fun_c的属性中有val的值,是一个元组,不能够改变
print(f.__closure__)
f(60)
f = fun(89)
f(90)
运行结果:
12ee0b0
(<cell at 0x017B24B0: int object at 0x012EE0B0>,)
通过
12ee0b0
不及格
闭包的作用:
1. 代码的封装
2. 代码复用
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/you_are_my_dream/article/details/53166767
标签:Python,闭包
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python读取ini配置文件传参的简单示例
2022-02-06 09:51:36
详解Python中heapq模块的用法
2022-01-15 05:58:35
![](https://img.aspxhome.com/file/2023/7/89447_0s.png)
详解Pytorch如何利用yaml定义卷积网络
2023-02-16 10:46:01
python读取.data文件的实现
2021-10-28 06:24:05
![](https://img.aspxhome.com/file/2023/8/125208_0s.png)
asp中数组的用法
2008-05-12 22:29:00
详解Django中Request对象的相关用法
2021-12-08 16:30:06
![](https://img.aspxhome.com/file/2023/6/99436_0s.jpg)
Python爬虫工程师面试问题总结
2023-06-10 13:23:20
python题解LeetCode303区域和检索示例详解
2022-12-13 16:10:11
推荐5款跨平台的PHP编辑器
2023-10-18 12:49:40
![](https://img.aspxhome.com/file/2023/6/55696_0s.png)
Django中信号signals的简单使用方法
2023-08-18 08:49:49
Python实现从多表格中随机抽取数据
2022-07-01 01:58:18
![](https://img.aspxhome.com/file/2023/1/83931_0s.png)
Python Pillow Image.save 保存为jpg图片压缩问题
2023-07-05 11:13:49
一文带你吃透什么是PHP中的序列化
2023-06-12 19:44:20
python 哈希表实现简单python字典代码实例
2023-12-28 06:11:32
通过Python实现控制手机详解
2021-04-21 12:10:37
![](https://img.aspxhome.com/file/2023/2/69552_0s.png)
详解Python中如何写控制台进度条的整理
2023-12-31 03:32:51
![](https://img.aspxhome.com/file/2023/3/89413_0s.png)
使用Abot中文分词组件来开发ASP站内搜索引擎
2007-10-18 13:36:00
Django 用户登陆访问限制实例 @login_required
2021-05-26 07:31:22
python PyGame五子棋小游戏
2023-09-29 13:32:45
![](https://img.aspxhome.com/file/2023/2/95862_0s.png)
对TensorFlow中的variables_to_restore函数详解
2022-09-11 00:49:19