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之关于类的初步认识
Oct 11 Python
Python查找函数f(x)=0根的解决方法
May 07 Python
基于Python 的进程管理工具supervisor使用指南
Sep 18 Python
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
Python生成指定数量的优惠码实操内容
Jun 18 Python
关于PyTorch源码解读之torchvision.models
Aug 17 Python
Python 切分数组实例解析
Nov 07 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
Pytorch之Variable的用法
Dec 31 Python
Python实现实时数据采集新型冠状病毒数据实例
Feb 04 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
Python使用pyyaml模块处理yaml数据
Apr 14 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开发大型项目的一点经验
2006/10/09 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
计算php页面运行时间的函数介绍
2013/07/01 PHP
让元素在网页中可拖动示例代码
2013/08/13 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
Python验证码截取识别代码实例
2020/05/16 Python
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
英语道歉信范文
2014/01/09 职场文书
大学军训通讯稿
2014/01/13 职场文书
运动会稿件100字
2014/02/21 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
争做文明公民倡议书
2014/08/29 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
党支部综合考察意见
2015/06/01 职场文书
Linux中如何安装并部署Redis
2022/04/18 Servers
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android