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找出9个连续的空闲端口
Feb 01 Python
Python中运算符"=="和"is"的详解
Oct 08 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
python 使用shutil复制图片的例子
Dec 13 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
python实现全排列代码(回溯、深度优先搜索)
Feb 26 Python
基于python实现百度语音识别和图灵对话
Nov 02 Python
python 图像增强算法实现详解
Jan 24 Python
Python tkinter实现日期选择器
Feb 22 Python
用python画城市轮播地图
May 28 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
Mar 03 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
对盗链说再见...
2006/10/09 PHP
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
jQuery之日期选择器的深入解析
2013/06/19 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
Python赋值语句后逗号的作用分析
2015/06/08 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Python如何给函数库增加日志功能
2020/08/04 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
vue项目实现分页效果
2021/03/24 Vue.js
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
旅游网创业计划书
2014/01/31 职场文书
生产部管理制度
2014/01/31 职场文书
合作意向书
2014/07/30 职场文书
2014年环保局工作总结
2014/12/11 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
就业推荐表院系意见
2015/06/05 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
2022年显卡天梯图(6月更新)
2022/06/17 数码科技