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 第一步 hello world
Sep 25 Python
python计算书页码的统计数字问题实例
Sep 26 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
python3判断url链接是否为404的方法
Aug 10 Python
Python基础学习之时间转换函数用法详解
Jun 18 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
django使用xadmin的全局配置详解
Nov 15 Python
浅谈python 类方法/静态方法
Sep 18 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
May 14 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
Home Coffee Roasting
2021/03/03 咖啡文化
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
深入理解js中this的用法
2016/05/28 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Python查询IP地址归属完整代码
2017/06/21 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
python logging模块的使用详解
2020/10/23 Python
ASP.NET Core中的配置详解
2021/02/05 Python
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
校园创业策划书
2014/01/14 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js