兄弟连学python(4)——内部函数
来源:互联网 发布:什么软件可以看轻小说 编辑:程序博客网 时间:2024/05/20 10:56
内部函数
在函数内部声明的函数就是内部函数。
格式:
def 函数名(): 局部变量... def 内部函数名(): Python功能代码...
示例:
def funName(): name = 'dragon' #定义一个内部函数 def inner(): print('我是内部函数')'''注释: 1.内部函数的本质就是局部变量(函数就是一个变量) 2.内部函数在函数外部不可以直接调用 3.内部函数在函数内部调用(当然,必须要定义内部函数之后才能调用)'''
闭包
使用特定或特殊的方式,将局部变量(内部函数)引入到全局环境中使用,这就是闭包操作。
闭包方法1:
def 函数名(): 局部变量... def 内部函数名(): pass return (局部变量,内部函数...)
闭包方法2:
def 函数名(): 局部变量 def 内部函数名(): pass #获取所有需要进行闭包操作的函数和变量 defall(): return(局部变量,内部函数...) return all
闭包原理:
闭包的优缺点:
优点: 1.可以方便的进行函数式编程,组织程序代码 2.使内部函数和局部变量在外部可以访问缺点: 1.闭包操作会导致整个函数的内部环境,被长久保存,占用大量内存。
闭包环境查看:__closure__
用于查询当前闭包操作所使用的环境中的变量和内部函数等信息。
nonlocal
nonlocal关键字的意义,不是局部变量,当然他也不是全局变量,通常用于内部函数中使用外部函数的局部变量。
#声明一个外部函数def outer(): #声明一个变量(肯定不是全局变量) x = 5 #声明一个内部函数 def inner(): nonlocal x #声明x不是局部变量 x += 9 print(x) #调用函数 inner()#调用outerouter()'''注释:如果内部函数想使用全局变量,那么应该使用global声明变量(函数最外层的全局变量)如果内部函数使用的是外部函数的局部变量,那么应该使用nonlocal声明(内部函数的外层,外部函数的局部变量)
'''
#闭包:通过一定的方式将函数内部的局部变量或者内部函数转移到函数之外的方法#闭包方法1:def home(): #局部变量 #钱 money = '10000美金' #狗 dog = '狂龙' #内部函数 #孩子 def baby(): print('宝宝是小鱼的娃娃') #车 def car(): print('爷是小鱼的大黄蜂') #媳妇儿 def wife(): print('我是小鱼老婆') return (money,dog,car,baby) return wifejxd = home()qiangjiao = jxd()print(qiangjiao)#接收钱qian = qiangjiao[0]gou = qiangjiao[1]che = qiangjiao[2]bb = qiangjiao[3]print(qian)print(gou)che()bb()
阅读全文
0 0
- 兄弟连学python(4)——内部函数
- 兄弟连学python》》》内部函数
- 兄弟连学Python(1)— 函数
- 兄弟连学Python(4)--lambda函数
- 兄弟连学python(2)——函数
- 兄弟连学python(3)——函数文档
- 兄弟连学python(1)——初学python
- 兄弟连学Python(1)—Python中的逻辑运算
- 兄弟连学Python(2)—python初学感受
- 兄弟连学Python(3)—python求职简历
- 兄弟连学Python(6)—Python控制流初探
- 兄弟连学Python(02)———数据类型
- 兄弟连学python(1)——数据类型转换
- 兄弟连学python(2)——Number数据类型介绍
- 兄弟连学python(5)——lambda表达式
- 兄弟连学python(6)——字符串
- 兄弟连学Python(2)—分支结构
- 兄弟连学Python(4)—Python前端HTML与CSS初步认识
- VS2017+QT5.10编译QT静态库
- CF 893C DFS
- linux内核的I2C子系统详解5——i2c_driver的注册、i2c_client的来源
- comic life中文版下载 | Comic Life(漫画制作工具)官方破解版V3.5.6下载 | comic life破解版
- (转)被AI改变的风投模式:数据驱动使效率提高10倍
- 兄弟连学python(4)——内部函数
- 学习安卓第一周
- Java集合之三List接口及其实现类ArrayList、LinkedList、Vector
- js原生ajax与jQuery的ajax
- 根据Request获取客户端IP
- 使用MVP搜索页面到商品列表与商品详情
- [BZOJ1803][Spoj1487]Query on a tree III(dfs序+主席树)
- Spark Streaming中如何实现Exactly-Once
- RabbitMQ用户增删及权限控制