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脚本
Feb 10 Python
Python实现的一个找零钱的小程序代码分享
Aug 25 Python
python中ConfigParse模块的用法
Sep 29 Python
Python安装使用命令行交互模块pexpect的基础教程
May 12 Python
python3.5使用tkinter制作记事本
Jun 20 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 Python
Python语言快速上手学习方法
Dec 14 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
Python如何用filter函数筛选数据
Mar 05 Python
OpenCV图片漫画效果的实现示例
Aug 18 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 echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php简单压缩css样式示例
2016/09/22 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
接收键盘指令的脚本
2006/06/26 Javascript
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
JavaScript中Function函数与Object对象的关系
2015/12/17 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
python获取当前计算机cpu数量的方法
2015/04/18 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
Windows下python3.7安装教程
2018/07/31 Python
python如何制作英文字典
2019/06/25 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
餐厅采购员岗位职责
2014/03/06 职场文书
小班下学期个人总结
2015/02/12 职场文书
求职简历自我评价范文
2015/03/10 职场文书
就业证明函
2015/06/17 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
基于PyQt5制作一个群发邮件工具
2022/04/08 Python