作用域和函数对象
名称空间的作用域
作用域
作用域就是名称空间所能够作用的范围。
内置名称空间
程序任何阶段任何位置均可使用(全局有效)。
全局名称空间
程序任何阶段任何位置均可使用(全局有效)。
局部名称空间
一般情况下只在各自的局部名称空间中有效。
关键字
如果数据为不可变类型则需要关键字global声明。如果数据为可变类型则无需关键字global声明。
关键字
def index(): print('from index') a = index a() # 本质就是在调用index函数
用法2:函数名可以当做函数的实参
def index(): print('from index') def func(a): print(a) a() print('from func') func(index)
用法3:函数名可以当做函数返回值
def index(): print('from index') def func(): print('from func') return index res = func() # 调用func并接受func的返回值 res()
用法4:函数名可以当做容器类型的元素
def index(): print('from index') l = [111, 222, 333, index()] print(l)
函数体内部定义其他函数。
目的是将复杂的功能全部隐藏起来 暴露一个简单的接口。
闭包函数的两个特征
闭:指定义在函数内部的函数。
包:内部函数使用了外部函数名称空间中的名字。
def outer(): x = 222 def index(): print('from index', x) return index
传值
利用闭包函数给函数传参。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通