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实现两款计算器功能示例
Dec 19 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
pandas 快速处理 date_time 日期格式方法
Nov 12 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
如何通过50行Python代码获取公众号全部文章
Jul 12 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
Python实现word2Vec model过程解析
Dec 16 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
Python绘图实现台风路径可视化代码实例
Oct 23 Python
Python3+Flask安装使用教程详解
Feb 16 Python
Python保存并浏览用户的历史记录
Apr 29 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
php Smarty 字符比较代码
2011/02/27 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
js模拟F11页面全屏显示
2019/09/17 Javascript
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
python 8种必备的gui库
2020/08/27 Python
结婚周年感言
2014/02/24 职场文书
房屋买卖协议书
2014/04/10 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
党员转正党支部意见
2015/06/02 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
MYSQL 表的全面总结
2021/11/11 MySQL
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS