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错误和解决方法汇总整理
Jun 03 Python
python字符串编码识别模块chardet简单应用
Jun 15 Python
python 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
Python学生信息管理系统修改版
Mar 13 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
Django单元测试工具test client使用详解
Aug 02 Python
Python下opencv图像阈值处理的使用笔记
Aug 04 Python
python 动态迁移solr数据过程解析
Sep 04 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
Python基础之数据结构详解
Apr 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
PHP计算加权平均数的方法
2015/07/16 PHP
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
利用python实现数据分析
2017/01/11 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
Python中常见的异常总结
2018/02/20 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
在Python中COM口的调用方法
2019/07/03 Python
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
const和static readonly区别
2013/05/20 面试题
法学毕业生自我鉴定
2014/01/31 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
大学学生会辞职信
2015/05/13 职场文书
人代会简报
2015/07/21 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
创业计划书之家教托管
2019/09/25 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
python爬取某网站原图作为壁纸
2021/06/02 Python
python小型的音频操作库mp3Play
2022/04/24 Python