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获取Windows或Linux主机名称通用函数分享
Nov 22 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
python将一组数分成每3个一组的实例
Nov 14 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
Mar 05 Python
NumPy 基本切片和索引的具体使用方法
Apr 24 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
Python 面向对象之封装、继承、多态操作实例分析
Nov 21 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
TFRecord文件查看包含的所有Features代码
Feb 17 Python
Python使用for生成列表实现过程解析
Sep 22 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&amp;&amp;mysql)二
2006/10/09 PHP
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
微信小程序如何访问公众号文章
2019/07/08 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
Python Subprocess模块原理及实例
2019/08/26 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python Selenium参数配置方法解析
2020/01/19 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
大学生职业生涯规划书汇总
2014/03/20 职场文书
节能标语大全
2014/06/21 职场文书
政风行风建设责任书
2014/07/23 职场文书
军事博物馆观后感
2015/06/05 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书