python:从入门到放弃 09 函数对象与闭包
函数对象
函数对象指的是函数可以被当做’数据’来处理,具体可以分为四个方面的使用
函数名可以当做变量名赋值
def bar():
return add
func=bar()
func(1,2)
3
函数名还可以当成函数的实参
def foo(x,y,func):
return func(x,y)
foo(1,2,add)
3
函数名还可以当做函数的返回值
def bar():
return add
func=bar()
func(1,2)
3
函数名可以作为容器类型的元素
'''容器类型:内部可以存档多个元素的数据类型>>>:列表、元组、字典'''
def index():
print('from index')
l1 = [11, 22, 33, 44, index]
print(l1)
l1[-1]() # index()
闭包函数
闭包函数的特征:
1.闭:定义在函数内部的函数
2.包:内部函数使用了外层函数名称空间中的名字
def outer():
x = 999
def inner(): # 闭包函数
print('from outer>>>inner',x)
return inner
x = 666
res = outer()
res() # from outer>>>inner 999
'''闭包函数inner使用的是函数outer的局部名称空间的变量X,而非全局名称空间的变量X'''
闭包函数实际应用
目前为止,我们得到了两种为函数体传值的方式,一种是直接将值以参数的形式传入
,另外一种就是将值包给函数
#方式一:
def index(username):
print(username)
index('Rain') # 以参数的形式传入
#方式二:
def outer():
username = 'Rain'
def index():
print(username) # 使用的是outer函数包给index函数的值
return index
res = outer()
res() # Rain
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(一):从.NET IoT入
· .NET 开发的分流抢票软件,不做广告、不收集隐私
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· 开箱你的 AI 语音女友「GitHub 热点速览」
· 前端实现 HTML 网页转 PDF 并导出