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中的文档测试模块
Apr 28 Python
Python遍历指定文件及文件夹的方法
May 09 Python
详解Python中的Cookie模块使用
Jul 06 Python
简析Python的闭包和装饰器
Feb 26 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
Python urllib库如何添加headers过程解析
Oct 05 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 stripos()函数及注意事项的分析
2013/06/08 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
给医务人员表扬信
2014/01/12 职场文书
20岁生日感言
2014/01/13 职场文书
文秘求职信范文
2014/04/10 职场文书
供货协议书
2014/04/22 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
辞职离别感言
2015/08/04 职场文书