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实现socket端口重定向示例
Feb 10 Python
Python爬虫模拟登录带验证码网站
Jan 22 Python
centos6.7安装python2.7.11的具体方法
Jan 16 Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
Sep 26 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
Python发送邮件实现基础解析
Aug 14 Python
python 如何调用远程接口
Sep 11 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 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设计聊天室步步通
2006/10/09 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
2010/01/22 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
python写入中英文字符串到文件的方法
2015/05/06 Python
python3.4实现邮件发送功能
2018/05/28 Python
python 常用的基础函数
2018/07/10 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
Python读写压缩文件的方法
2020/07/30 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
高中毕业自我鉴定
2013/12/16 职场文书
八一演出活动方案
2014/02/03 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
化工专业求职信
2014/07/01 职场文书
IT工程师岗位职责
2014/07/04 职场文书
答谢词范文
2015/01/05 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记