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实现的二叉树算法和kmp算法实例
Apr 25 Python
python socket 超时设置 errno 10054
Jul 01 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
简单实现Python爬取网络图片
Apr 01 Python
Python实现随机漫步功能
Jul 09 Python
python高阶爬虫实战分析
Jul 29 Python
Python 字符串换行的多种方式
Sep 06 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 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
第二节--PHP5 的对象模型
2006/11/16 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
室内设计专业个人的自我评价
2013/12/18 职场文书
护士演讲稿范文
2014/01/05 职场文书
司机检讨书
2014/02/13 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
毕业大学生自荐信
2014/06/17 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
房产协议书范本2014
2014/09/30 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
学校工会工作总结2015
2015/05/19 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android