1-05-1 内部函数与闭包
函数 内部 05 闭包
2023-09-14 09:12:58 时间
内部函数
在函数内部又有定义函数,内部的函数称之为内部函数。
# 使用内部函数时需要注意缩进
def OuterFun():
print('...函数:OuterFun 被调用...')
def innerFun():
print('...函数:innerFun 被调用...')
# innerFun 只能在 OuterFun 中被调用
innerFun()
OuterFun()
------------------------------------------
# 输出结果如下:
...函数:OuterFun 被调用...
...函数:innerFun 被调用...
闭包
如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).
def OuterFun(x):
# 定义一个内部函数
def closureFun(y):
# 引用了外部作用域 OuterFun() 中的变量 x
print('x=%d, y=%d' % (x,y))
return x*y
# 不带括号调用的是函数本身,带括号调用的是函数的return
return closureFun
a = OuterFun(10)
a(20)
------------------------------------------
# 输出结果如下:
x=10,y=20
200
闭包使用的场域是在调用函数时希望可以存取函数内部变量,下方为一计数器的应用。
def counterFunc(counter=0):
def closureFunc():
nonlocal counter
counter += 1
print('counter:',counter)
return counter
return closureFunc
cnt = counterFunc()
cnt()
cnt()
cnt()
------------------------------------------
# 输出结果如下
counter: 1
counter: 2
counter: 3
相关文章
- php的json_decode函数无法解析json
- matlab中interp1什么意思,matlab中interp1函数是什么意思啊?
- JS之在Vue对象内部获取vue对象的索引(箭头函数的闭包导致this代表的是函数本身)「建议收藏」
- 【说站】python有哪些数组叠加函数
- js函数式编程讲解
- VS2015 error LNK2019 无法解析的外部符号 _WinMain@16,该符号在函数 “int __cdecl invoke_main(void)”[通俗易懂]
- c语言调用循环内部函数,通达信绘图函数调用,通达信调用内部数据[通俗易懂]
- JavaScript之函数(二) 函数内部三个不常见的属性
- 【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )
- 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
- 获取Python函数信息的方法
- 掌握MySQL函数,快速提升数据库技能(mysql函数怎么用)
- MySQL聚合函数优化:提升效率(mysql聚合函数优化)
- Oracle Floor函数的用途和使用方法详解(oraclefloor)
- MSSQL中汉字拼音转换的实现方法(mssql汉字转拼音函数)
- MySQL 初始化函数详解(mysql_init)
- 模拟SQLSERVER的两个函数:dateadd(),datediff()
- jQuery学习6操纵元素显示效果的函数
- php数组函数序列之next()-移动数组内部指针到下一个元素的位置,并返回该元素值
- oracle日期时间函数使用总结
- Oracle定义DES加密解密及MD5加密函数示例
- 浅谈javascript函数内部属性