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计算圆周长、面积、球体体积并画出圆
Apr 08 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
python下载文件时显示下载进度的方法
Apr 02 Python
python集合用法实例分析
May 30 Python
浅谈python内置变量-reversed(seq)
Jun 21 Python
Python+OpenCV让电脑帮你玩微信跳一跳
Jan 04 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
python实现大战外星人小游戏实例代码
Dec 26 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
中国收音机工业发展史
2021/03/02 无线电
PHP Pear 安装及使用
2009/03/19 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
js函数排序的实例代码
2013/07/01 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
详解Node 定时器
2018/02/26 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
python del()函数用法
2013/03/24 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
毕业自我鉴定书
2014/03/24 职场文书
股权转让协议书
2014/04/12 职场文书
环保小标语
2014/06/13 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
大学生见习报告范文
2014/11/03 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
会计求职简历自我评价
2015/03/10 职场文书
公积金具结保证书
2015/05/11 职场文书
英语投诉信范文
2015/07/03 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python