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 15 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
Python的装饰器用法学习笔记
Jun 24 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
Python字典对象实现原理详解
Jul 01 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
基于Python3.7.1无法导入Numpy的解决方式
Mar 09 Python
如何理解python中数字列表
May 29 Python
python 写一个水果忍者游戏
Jan 13 Python
用python制作个音乐下载器
Jan 30 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初学者的8点有效建议
2010/11/20 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
js 加载并解析XML字符串的代码
2009/12/13 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
python使用心得之获得github代码库列表
2014/06/25 Python
Python3实现从指定路径查找文件的方法
2015/05/22 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
python实现飞机大战小游戏
2019/11/08 Python
Python 字符串池化的前提
2020/07/03 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
软件测试面试题
2014/01/05 面试题
财务助理岗位职责
2013/11/10 职场文书
初中校园之声广播稿
2014/01/15 职场文书
银行转正自我鉴定
2014/09/29 职场文书