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 基础学习第二弹 类属性和实例属性
Aug 27 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
深入理解Python3中的http.client模块
Mar 29 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
Python设计模式之中介模式简单示例
Jan 09 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
python实现简易通讯录修改版
Mar 13 Python
python 读取DICOM头文件的实例
May 07 Python
python 解决flask 图片在线浏览或者直接下载的问题
Jan 09 Python
Pytorch .pth权重文件的使用解析
Feb 14 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 Python
python中封包建立过程实例
Feb 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上的memcache和memcached两个pecl库
2010/03/29 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
用js解决数字不能换行问题
2010/08/10 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python学生管理系统学习笔记
2019/03/19 Python
kali中python版本的切换方法
2019/07/11 Python
python实现桌面托盘气泡提示
2019/07/29 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
10张动图学会python循环与递归问题
2021/02/06 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
c语言常见笔试题总结
2016/09/05 面试题
南京软件公司的.net程序员笔试题
2014/08/31 面试题
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
毕业生找工作自荐书
2014/06/30 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
三方股份合作协议书
2014/10/13 职场文书
《确定位置》教学反思
2016/02/18 职场文书
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP