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根据端口号关闭进程的方法
Nov 06 Python
python实现nao机器人身体躯干和腿部动作操作
Apr 29 Python
django 捕获异常和日志系统过程详解
Jul 18 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
python实现简易学生信息管理系统
Apr 05 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
python邮件中附加文字、html、图片、附件实现方法
Jan 04 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
如何用 Python 子进程关闭 Excel 自动化中的弹窗
May 07 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 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下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
8个PHP数组面试题
2015/06/23 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python ip正则式
2009/05/07 Python
跟老齐学Python之for循环语句
2014/10/02 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
python:动态路由的Flask程序代码
2019/11/22 Python
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
JPA的特点
2014/10/25 面试题
管理部副部长岗位职责范文
2014/03/09 职场文书
妇女工作先进事迹
2014/08/17 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
运动会广播稿100字
2014/09/14 职场文书
人民调解协议书范本
2014/10/11 职场文书
体育部部长竞选稿
2015/11/21 职场文书
《落花生》教学反思
2016/02/16 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js