Python闭包执行时值的传递方式实例分析


Posted in Python onJune 04, 2018

本文实例分析了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程序设计有所帮助。

Python 相关文章推荐
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
python 编写简单网页服务器的实例
Jun 01 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
python和php哪个更适合写爬虫
Jun 22 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
Python+kivy BoxLayout布局示例代码详解
Dec 28 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 #Python
python实现超简单的视频对象提取功能
Jun 04 #Python
利用python库在局域网内传输文件的方法
Jun 04 #Python
基于python的图片修复程序(实现水印去除)
Jun 04 #Python
python实现requests发送/上传多个文件的示例
Jun 04 #Python
python3写的简单本地文件上传服务器实例
Jun 04 #Python
Python装饰器的执行过程实例分析
Jun 04 #Python
You might like
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
介绍php设计模式中的工厂模式
2008/06/12 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
js 学习笔记(三)
2009/12/29 Javascript
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
tornado 多进程模式解析
2018/01/15 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
python 安装移动复制第三方库操作
2020/07/13 Python
Python日志器使用方法及原理解析
2020/09/27 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
校园创业策划书
2014/01/14 职场文书
《中华少年》教学反思
2014/02/15 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
新学期开学演讲稿
2014/05/24 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
医学会议开幕词
2016/03/03 职场文书
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL