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基于递归实现电话号码映射功能示例
Apr 13 Python
Django使用详解:ORM 的反向查找(related_name)
May 30 Python
python numpy元素的区间查找方法
Nov 14 Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 Python
Python连接mysql方法及常用参数
Sep 01 Python
Django程序的优化技巧
Apr 29 Python
python通过新建环境安装tfx的问题
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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
python判断字符串是否纯数字的方法
2014/11/19 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
保证书范文大全
2014/04/28 职场文书
安全生产专项整治方案
2014/05/06 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
学历证明范文
2015/06/16 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
python_tkinter弹出对话框创建
2022/03/20 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL