Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例


Posted in Python onOctober 14, 2019

本文实例讲述了Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作。分享给大家供大家参考,具体如下:

实例对象也可以实现闭包的功能,不过实例对象消耗的资源(内存)比闭包多。

demo.py(闭包):

# 闭包,分割作用域。 外层函数内部嵌套内部函数,外层函数分割变量作用域,并返回内部函数的引用。
# 外层函数负责分割作用域,内层函数才是闭包提供的功能。 外层函数返回内层函数的引用,供外部使用。
def my_line(k, b):
  # k,b只在my_line函数以及create_y函数内部有效,在外部无效。 比用全局变量节省资源。
  def create_y(x):
    print(k*x+b)
  return create_y
line_1 = my_line(1, 2)
line_1(0)
line_1(1)
line_1(2)
line_2 = my_line(11, 22)
line_2(0)
line_2(1)
line_2(2)

运行结果:

2
3
4
22
33
44

demo.py(nonlocal,声明闭包中的变量):

x = 100
def func_1():
 x = 200
 def func_2():
 # 如果要使用func_1(闭包)中的变量,需要使用nonlocal声明。
 nonlocal x
 print("x值为:%d" % x)  # 200
 x = 300
 return func_2
t1 = func_1()
t1()

运行结果:

x值为:200

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中如何获取类属性的列表
Dec 26 Python
Python编程实现删除VC临时文件及Debug目录的方法
Mar 22 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
python实现简单成绩录入系统
Sep 19 Python
pytorch实现线性拟合方式
Jan 15 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
python json 递归打印所有json子节点信息的例子
Feb 27 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
keras中的卷积层&池化层的用法
May 22 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 #Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
Oct 14 #Python
执行Django数据迁移时报 1091错误及解决方法
Oct 14 #Python
解析Python3中的Import
Oct 13 #Python
Python英文文章词频统计(14份剑桥真题词频统计)
Oct 13 #Python
Python 转换RGB颜色值的示例代码
Oct 13 #Python
Django中自定义查询对象的具体使用
Oct 13 #Python
You might like
文件上传程序的全部源码
2006/10/09 PHP
php 中英文语言转换类
2011/09/07 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
基于jquery的Repeater实现代码
2010/07/17 Javascript
jQuery操作select的实例代码
2012/06/14 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
python 获取url中的参数列表实例
2018/12/18 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
毕业生个人求职信范文分享
2014/01/05 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
会议通知范文
2015/04/15 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python