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 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
Python每天必学之bytes字节
Jan 28 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
python spyder中读取txt为图片的方法
Apr 27 Python
python多进程控制学习小结
Oct 31 Python
python检测IP地址变化并触发事件
Dec 26 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
Pytorch evaluation每次运行结果不同的解决
Jan 02 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 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
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
python如何实现反向迭代
2018/03/20 Python
python 识别图片中的文字信息方法
2018/05/10 Python
django初始化数据库的实例
2018/05/27 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
教学个人的自我评价分享
2014/02/16 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
物业保安员岗位职责
2014/03/14 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
利用Python实时获取steam特惠游戏数据
2022/06/25 Python