提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本文主要介绍函数的闭包
提示:以下是本篇文章正文内容,下面案例可供参考
一、内部函数

#内部函数
‘’’
特点:
1.可以访问外部的函数的变量
2.内部函数可以修改外部函数的可变类型的变量例如:list1
3.内部函数修改全局的不可变变量时,需要在内部函数声明global 变量名
内部函数修改外部函数的不可变的变量时,需要在声明 nolocal 变量名
4.locals() 查看本地变量有哪些,以字典的形式输出
globals() 查看全局变量有哪些,以子弟的形式输出(注意里面会有系统的一些键值对)
‘’’
def func():
#声明变量
n=100 #局部变量
list1=[1,2,3,4] #局部变量
#声明内部函数
def inner_func():
#对 list里面的元素进行加5操作
nonlocal n
for index,i in enumerate(list1):
# 0 3
list1[index]=i+n
list1.sort()
#修改n
n +=101
#调用一下内部的函数
inner_func()
print(n)
print(list1)
#调用func
func()
案例2
a=100 #全局变量
print(globals())
def func():
global a
#声明变量
b=99
#声明函数
def inner_func():
nonlocal b
global a
c=88
#尝试修改
c+=12
b+=1
a+=10
#尝试打印
print(a,b,c)
#调用内部函数
inner_func()
#使用locals()内置函数进行查看,可以看到在当前函数中声明的内容有哪些
#local()是一个字段,key,value
print(locals())
func()
二、函数的闭包
1.闭包的定义
#闭包
# 在函数中提出的概念:
'''
条件:
1 .外部函数中定义了内部函数
2. 外部函数时有返回值
3. 返回值是,内部函数名
4.内部函数引用了外部函数的变量
格式:
def 外部函数():
pass
def 内部函数()
pass
return 内部函数
'''
def func():
a=100
def inner_func():
b=99
print(a,b)
print(locals())
return inner_func
x=func()
x()
#print(a) 报错
2.闭包的应用
#闭包
'''
1.能够保存返回返回闭包时的状态
'''
def func(a,b):
c=10
def inner_func():
s=a+b+c
print('相加之和的结果是:',s)
return inner_func
#调用func
ifunc=func(6,9) #ifunc 就是inner_func
#调用返回处理的内部函数
ifunc1=func(2,8)
ifunc2=func(9,10)
print(ifunc)
print(ifunc1)
print(ifunc2)
ifunc1()
ifunc()
ifunc2()

2 闭包的应用计时器
#闭包的应用
#计数器
def generate_count():
container=[0]
def add_one():
container[0]= container[0]+1
print('当前是第{}次访问'.format(container[0]))
return add_one
#内部函数就是一个计数器
counter =generate_count()
counter() #第一次的访问
counter() #.....
3 闭包的总结

'''
闭包有什么缺点呢?
闭包的缺点1,作用域没有那么直观
回包的缺点2:因为变量不会被立即回收所以有一定内存占用问题
闭包作用: 1.可以使用同级作用域
2,读取其他元素的内部变量
3.延长作用域
闭包总结
1.闭包优化了变量,原来需要类对象完成的工作,闭包也可以完成
2.由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放
3.闭包的喊出,时代吗变得简洁,便于阅读代码
4.闭包是理解装饰器的基础
'''
def func():
a=100
def inner_func1():
b=90
s=a+b
print(s)
def inner_func2(): #define
inner_func1() #调用func1
print('--------inner_func2')
return 'Hello World'
return inner_func2()
#调用func
f= func()
print(f)
ff=f()
#inner_func()
总结
提示:主要介绍闭包和内置函数
本文详细探讨了Python中的函数闭包,从内部函数的特点出发,重点解析了闭包的定义,展示了闭包在计时器等场景的应用,并对闭包的使用进行了总结,旨在帮助读者深入理解这一核心概念。
2万+

被折叠的 条评论
为什么被折叠?



