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进程管理工具supervisor使用实例
Sep 17 Python
Python通过future处理并发问题
Oct 17 Python
Python探索之爬取电商售卖信息代码示例
Oct 27 Python
Python中turtle作图示例
Nov 15 Python
python3 读写文件换行符的方法
Apr 09 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
python判断一个数是否能被另一个整数整除的实例
Dec 12 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
python面向对象 反射原理解析
Aug 12 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
详解Python 最短匹配模式
Jul 29 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 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基础学习之变量的使用
2011/06/09 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
vue自定义全局共用函数详解
2018/09/18 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
python实现数通设备端口监控示例
2014/04/02 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
python回调函数用法实例分析
2015/05/09 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python使用pymysql小技巧
2017/06/04 Python
python爬虫使用cookie登录详解
2017/12/27 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
python判断链表是否有环的实例代码
2020/01/31 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
世界最大的票务市场:viagogo
2017/02/16 全球购物
2014年父亲节活动方案
2014/03/06 职场文书
鉴定评语大全
2014/05/05 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
公务员年度考核评语
2014/12/31 职场文书
护士辞职信怎么写
2015/02/27 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
毕业实习感受与体会
2015/05/26 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书