Python(5)————函数闭包方法
来源:互联网 发布:c语言vc6.0软件下载 编辑:程序博客网 时间:2024/06/05 18:42
闭包方法:
通过一定的方式将函数内部的局部变量或者内部函数转移到函数之外的方法
方法一
基本原理就是:
让一个内部函数带着函数中的数据通过return返回出来,然后这个出来的内部函数再通过return把它带出来的数据返回出来,然后用变量接受!
代码送上
def test(): #局部变量 var = '局部变量' var1 = '局部变量1' var2 = '局部变量2' #内部函数 def func(): print('内部函数') def func1(): print('内部函数1') def func2(): print('内部函数2') #把想调出的 return (var,var1,var2,func,func1) return func2
#调出内部函数result = test() #(func2)print(result)result1 = result() #print(result1)val = result1[0]val1 = result1[1]val2 = result1[2]func3 = result1[3]func4 = result1[4]print(val)print(val1)print(val2)func3()func4()引用我们老师上课的例子.....(这不算剽窃吧?)、
def home(): #局部变量 #钱 money = '100越南盾' #狗 dog = '旺财' #内部函数 #妹妹 def newsister(): print('老娘是卫东的妹妹!') #车 def car(): print('老子是卫东夹的拖拉机') # 姐姐 def oldsister(): #在姐姐离家之前,从家里搬东西 print('我是卫东的姐姐') #存放东西的容器,元祖 return (money,dog,car,newsister) #姐姐离家出走 return oldsister#调用函数
#天宝来接应卫东的姐姐tianbao = home()#提前查看带出来的内部数据print(tianbao.__closure__)#接收卫东姐姐带出来的东西#相当与调用乐 oldsister的函数things = tianbao()print(things)#接收钱qian = things[0]#接收狗gou = things[1]#接收车che = things[2]#接收妹妹meimei = things[3]print(qian)print(gou)che()meimei()
图解:
方法二
基本原理就是:
先声明一个全局变量,然后在函数内部再把需要的数据以元组的形式赋值给这个全局变量,然后调用一遍函数,这个全局变量就被重新赋值了,因为是个元祖类型,可以用索引把想要的数据获取出来!
但是这个方法我们并不推荐使用因为容易污染全局变量空间导致特定名称的变量产生!
话不多说,代码送上...
#声明一个全局变量spvar = Nonedef test(): #全局声明一下全局变量 global spvar #局部变量 var = 10 var2 = 11 var3 = 12 print('test') #内部函数 def func(): print('内部函数') def func1(): print('内部函数1') def func2(): print('内部函数2') spvar = (var,var2,func1,func2)调用函数
#调用函数test()#打印全局变量(元组)print(spvar)#访问变量print(spvar[0],spvar[1])spvar[2]()spvar[3]()丛浩讲师代码奉上!
#声明张帅变量zhangshuai = None#伟任的家def home(): #全局声明(到别人家认干亲) global zhangshuai #局部变量 #钱 money = 1 #狗 dog = '大黄' #猫 cat = '咪咪' #内部函数 #妹妹 def sister(): print('我是伟任的小妹妹~') #弟弟 def brother(): print('我是伟任的小弟弟~') #张帅 打包干爹干妈加的东西 zhangshuai = (money,dog,sister)调用函数
#调用函数home()#访问zhangshuai变量print(zhangshuai)#钱qian = zhangshuai[0]#狗gou = zhangshuai[1]#小妹妹meimei = zhangshuai[2]#访问所有带出来的数据print(qian)print(gou)meimei()
图解:
阅读全文
0 0
- Python(5)————函数闭包方法
- python闭包—返回函数
- python进阶学习笔记(二)——闭包、装饰器、偏函数
- Python:函数3——内嵌函数和闭包
- Python笔记4——函数式编程,高阶函数,闭包
- Python进阶学习笔记——函数式编程之返回函数&闭包
- 菜鸟学python(03)—— 闭包的两种方法
- python string包——简易函数使用
- Python包管理工具——Pip方法大全
- python——高阶函数——闭包 装饰
- JavaScript面向对象(2)——函数与闭包(函数、对象、闭包)
- Python入门(四)——模块,__name__属性,dir()函数,包的概念
- python 闭包函数
- Python 中的闭包 —— Closure
- Python学习笔记——闭包
- python学习—Numpy包
- python——一步一步教你认识Python闭包
- Python 学习入门(25)—— 闭包
- Codeforces Round #451 (Div. 2)
- MySQL基础教程11-Mysql删除数据表操作
- 高效并发处理之libevent
- [爱与性的实验报告(修订本)].小庄.扫描版(ED2000.COM).pdf 免费下载
- 蓝桥杯 算法提高 周期字串
- Python(5)————函数闭包方法
- Integer关于equals与==的比较(自动拆装箱技术和常量池技术)
- Ubuntu下学习git第一天--安装、创建仓库、添加文件
- Java Web目前主流的框架以及正在兴起的框架
- 算法与数据结构——算法题 114:类似跳表数据结构,查找元素的复杂度(腾讯2016笔试题) ? 待解决
- java字符串
- 【程序猿分享】添加百度自动推送工具代码来提高收录
- Leetcode:17. Letter Combinations of a Phone Number
- c++ 11 默认初始化