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使用mailbox打印电子邮件的方法
Apr 30 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
Python实现Youku视频批量下载功能
Mar 14 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
Python实现多线程的两种方式分析
Aug 29 Python
Django框架验证码用法实例分析
May 10 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
Python字节单位转换实例
Dec 05 Python
python适合做数据挖掘吗
Jun 16 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Jun 08 Python
图神经网络GNN算法
May 11 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页面消耗内存过大的处理办法
2013/03/18 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
浅析Vue自定义组件的v-model
2017/11/26 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
python比较两个列表大小的方法
2015/07/11 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
python实现解数独程序代码
2017/04/12 Python
python使用turtle绘制分形树
2018/06/22 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
用 Python 制作地球仪的方法
2020/04/24 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
荷兰手表网站:Watch2Day
2018/07/02 全球购物
自主招生自荐信格式
2013/12/03 职场文书
酒店实习个人鉴定
2013/12/07 职场文书
施工安全标语
2014/06/07 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
Selenium浏览器自动化如何上传文件
2022/04/06 Python
js判断两个数组相等的5种方法
2022/05/06 Javascript