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使用PyGame绘制图像并保存为图片文件的方法
Apr 24 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
python2.x实现人民币转大写人民币
Jun 20 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
python使用Matplotlib画饼图
Sep 25 Python
Python实现将通信达.day文件读取为DataFrame
Dec 22 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
python匿名函数的使用方法解析
Oct 10 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
python中pyqtgraph知识点总结
Jan 26 Python
如何用 Python 制作 GitHub 消息助手
Feb 20 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
php适配器模式简单应用示例
2019/10/23 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
javascript实现时钟动画
2020/12/03 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
使用Python生成随机密码的示例分享
2016/02/18 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
Python shelve模块实现解析
2019/08/28 Python
详解python 中in 的 用法
2019/12/12 Python
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
麦当劳辞职信范文
2014/01/18 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL