菜鸟学python(03)—— 闭包的两种方法
2017-12-14 08:40
253 查看
一、闭包必须满足的标准有:
1.必须有嵌套函数
2.嵌套函数必须引用封闭函数中定义的值
3.内部函数返回变量,外部函数返回嵌套函数
二、什么时候使用:
当嵌套函数引用封闭范围内的值时,就是把内部的东西拿到外部来用
三、下面送上两个例子
1.内部函数打包返回法
2.全局变量进入取出法
注意,方法2不推荐使用,容易污染全局变量空间,导致特定名称的变量产生
1.必须有嵌套函数
2.嵌套函数必须引用封闭函数中定义的值
3.内部函数返回变量,外部函数返回嵌套函数
二、什么时候使用:
当嵌套函数引用封闭范围内的值时,就是把内部的东西拿到外部来用
三、下面送上两个例子
1.内部函数打包返回法
#用于用户管理的函数 def user(): #用户名(对于user函数这是局部变量,对于modi、add、drop、get函数而言只是一个外部变量) username = '匿名用户' #密码 password = '' #添加用户操作 def add(): print('这是一个添加用户的函数') #修改用户 def modi(): #通知modi函数username不是当前函数的局部变量,也不是全局变量 nonlocal username #修改用户名 username = '史珍香' print('这是一个修改用户的函数') #删除用户 def drop(): print('这是一个删除用户的函数') #查看用户 def get(): #获取用户名 print(username) print('这是一个查询用户的操作') #使用闭包将所有用户管理的函数返回到函数之外 def manage(): return (add,modi,drop,get) #返回值 return manage #调用函数 -> 得到一个包含所有操作的函数 func = user() print(func) #调用管理函数 methods = func() #接收管理函数中的操作 useradd = methods[0] usermodi = methods[1] userdrop = methods[2] userget = methods[3] #操作用户函数 #修改用户名 usermodi() #获取用户名 userget()
2.全局变量进入取出法
#声明小王变量 xiaowang = None #地主的家 def home(): #全局声明(到别人家认干亲) global xiaowang #局部变量 #钱 money = 100 #狗 dog = '大黄' #猫 cat = '咪咪' #内部函数 #妹妹 def sister(): print('我是地主的小妹妹~') #弟弟 def brother(): print('我是地主的小弟弟~') #小王 打包干爹干妈家的东西 xiaowang = (money,dog,sister) #调用函数 home() #访问z小王变量 print(xiaowang) #钱 qian = xiaowang[0] #狗 gou = xiaowang[1] #小妹妹 meimei = xiaowang[2] #访问所有带出来的数据 print(qian) print(gou) meimei()
注意,方法2不推荐使用,容易污染全局变量空间,导致特定名称的变量产生
相关文章推荐
- 小结两种在Python中导入C语言扩展库的方法
- Python 中调用其他文件的两种方法 input 和raw_input
- python两种生成md5的方法
- python中数字和字符串连接的两种方法
- 爬取网页的两种方法(python3)
- python学习五:执行linux命令的两种方法、提高运行效率、进制转换、切片详解、ip和mac获取
- Python--windows下面给Python添加库包的两种方法
- 0003_20170226_【我是菜鸟】_equals与hashCode两种方法之间的关系
- python下载的两种方法
- python 读取并显示图片的两种方法
- python list排序的两种方法及实例讲解
- 更改Ubuntu默认python版本的两种方法
- python list排序的两种方法及实例讲解
- 小结两种在Python中导入C语言扩展库的方法
- python菜鸟笔记--python读取和写入txt文件的方法
- Python list排序的两种方法及实例讲解
- 用PYTHON进行字符串提取的两种方法
- python两种方法实现从1000万个随机数中找出top n元素(附c语言版)
- python 读取并显示图片的两种方法
- Python字符串格式化的方法(两种)