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内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
python操作mysql中文显示乱码的解决方法
Oct 11 Python
Python读取环境变量的方法和自定义类分享
Nov 22 Python
一步步教你用Python实现2048小游戏
Jan 19 Python
python实现感知器算法详解
Dec 19 Python
浅谈python爬虫使用Selenium模拟浏览器行为
Feb 23 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
使用Python自动生成HTML的方法示例
Aug 06 Python
python装饰器相当于函数的调用方式
Dec 27 Python
python删除某个目录文件夹的方法
May 26 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 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
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
smarty内置函数section的用法
2015/01/22 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
php对象工厂类完整示例
2018/08/09 PHP
jQuery 性能优化指南(3)
2009/05/21 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
Python数组遍历的简单实现方法小结
2016/04/27 Python
python实现感知器
2017/12/19 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python中反射和描述器总结
2018/09/23 Python
Python模块的加载讲解
2019/01/15 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
优秀大学生自荐信
2014/06/09 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
阳光体育运动标语口号
2015/12/26 职场文书