对象与闭包函数
一、函数对象
- 函数对象指的是函数可以被当做 数据 来处理,具体可以分为四个方面的使用函数
[1]函数可以被引用
- 函数的调用方式中使用表到时,将地址给到其他变量名就是引用
def add(x, y):
return x + y
add_1 = add
z = add_1(1, 2)
print(z)
[2]函数可以作为容器类型的元素
def add(x, y):
return x + y
def subtract(x, y):
return x - y
dict_fun = {1: add, 2: subtract}
func_id = int(input("请输入ID:"))
func = dict_fun[func_id]
print(func(5, 4))
[3]函数可以作为参数传入传入另一个函数
def add(x, y):
return x + y
def subtract(x, y):
return x - y
print(subtract(add(4, 5), 5))
[4]函数的返回值可以是一个函数
def outer():
print("这是外层函数!", end=' ')
def inner():
print("这是内层函数!")
return inner
func = outer()
func()
二、闭包函数
[1]什么是闭包
- 闭包是指包含对自由变量的函数和对这些变量的引用环境的组合。
- 基于函数对象的概念,可以将函数返回到任意位置去调用
- 但作用域的关系是在定义完函数时就已经被确定了的,与函数的调用位置无关。
[2]什么是闭包函数
a = 1
def outer():
a = 2
def inner():
print(a)
return inner
func = outer()
func()
[3]闭包函数的用途
(1)保持状态
(2)函数工厂
- 函数工厂: 闭包允许创建函数工厂,即可以动态生成函数。
- 在你的例子中,
page
函数就是一个函数工厂,它返回一个根据传入的 url
动态生成的函数
(3)封装
- 封装: 闭包可以用来实现类似面向对象编程中的封装概念。
- 通过将函数和其相关的状态(变量)捆绑在一起,形成一个封闭的单元。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下