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 相关文章推荐
apache部署python程序出现503错误的解决方法
Jul 24 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
wxPython实现窗口用图片做背景
Apr 25 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
python向字符串中添加元素的实例方法
Jun 28 Python
基于Django统计博客文章阅读量
Oct 29 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 Python
基于Python实现流星雨效果的绘制
Mar 18 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
一些星际专用术语解释
2020/03/04 星际争霸
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
给Function做的OOP扩展
2009/05/07 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
分享给Python新手们的几道简单练习题
2017/09/21 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
python try except 捕获所有异常的实例
2018/10/18 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
计算机学生的自我评价分享
2014/02/18 职场文书
小组名称和口号
2014/06/09 职场文书
管理失职检讨书
2015/05/05 职场文书
大学生就业意向书
2015/05/11 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android