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基础教程之python消息摘要算法使用示例
Feb 10 Python
Python实现登录接口的示例代码
Jul 21 Python
python实现二叉查找树实例代码
Feb 08 Python
使用Python读取大文件的方法
Feb 11 Python
python查询mysql,返回json的实例
Mar 26 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
python matplotlib实现双Y轴的实例
Feb 12 Python
python selenium firefox使用详解
Feb 26 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
Python序列对象与String类型内置方法详解
Oct 22 Python
Python log模块logging记录打印用法解析
Jan 20 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 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
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
php接口隔离原则实例分析
2019/11/11 PHP
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
Python的函数的一些高阶特性
2015/04/27 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
python中dict使用方法详解
2019/07/17 Python
深入学习python多线程与GIL
2019/08/26 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
大学活动策划书范文
2014/01/10 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
公司人事管理制度
2015/08/05 职场文书
党员学习型组织心得体会
2019/06/21 职场文书