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实现大文件排序的方法
Jul 10 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
深入理解Python中的super()方法
Nov 20 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
Python中的TCP socket写法示例
May 11 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
Python urlopen()参数代码示例解析
Dec 10 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
Python何绘制带有背景色块的折线图
Apr 23 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 __autoload()方法真的影响性能吗?
2012/03/30 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
解决Django中多条件查询的问题
2019/07/18 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
艺术专业大学生自我评价
2013/09/22 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis