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编写android截屏脚本双击运行即可
Jul 21 Python
用Python编写脚本使IE实现代理上网的教程
Apr 23 Python
21行Python代码实现拼写检查器
Jan 25 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
Python生成短uuid的方法实例详解
May 29 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
Django 缓存配置Redis使用详解
Jul 23 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 Python
Python devel安装失败问题解决方案
Jun 09 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 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
smtp邮件发送一例
2006/10/09 PHP
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
PHP JSON 数据解析代码
2010/05/26 PHP
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
JS Array对象入门分析
2008/10/30 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
jquery与js实现全选功能的区别
2017/06/11 jQuery
3种vue组件的书写形式
2017/11/29 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
django中的setting最佳配置小结
2017/11/21 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
国贸专业的职业规划范文
2014/01/23 职场文书
小学科学教学反思
2014/01/26 职场文书
促销活动总结模板
2014/07/01 职场文书
领导干部对照检查材料
2014/08/24 职场文书
逃课检讨书
2015/01/26 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电