闭包函数

本文介绍了闭包函数,指出内函数使用外函数局部变量且外函数返回内函数的过程为闭包,该内函数即闭包函数。给出了闭包函数的基本语法示例,还介绍了获取闭包函数使用变量的方法,同时阐述了闭包使外函数局部变量与内函数绑定、延长变量生命周期的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 闭包函数
'''
闭包:
	内函数使用了外函数的局部变量,
	并且外函数把内函数返回出来的过程是闭包
	这个内函数叫做闭包函数;
'''
# (1) 基本语法
def outer():
	a = 5
	b = 6
	# inner 是闭包函数
	def inner():
		print(a,b)
	return inner
res = outer()  # res = inner
print(res)
res()          # res() = inner()

# 获取闭包函数使用的变量  __closure__ , cell_contents (了解)
tup = res.__closure__
print("<==1==>")
print(tup)
# 获取元组里面第一个元素
obj = tup[0]
print(obj)
# 使用cell_contents来获取单元对象当中的值
res = obj.cell_contents
print(res)

obj2 = tup[1]
res2 = obj2.cell_contents
print(res2)
print("<==2==>")

# 闭包的特点:
"""
    内函数使用了外函数的局部变量,外函数的局部变量与内函数发生绑定,延长该变量的生命周期
    (实际内存给它存储了这个值,暂时不释放)
"""
# (2) 闭包函数特点
def majunqiang_family():
	dajie = "马蓉"
	erjie = "马冬梅"
	kuang = "金矿"
	# money 局部变量因为在闭包函数中使用,于是发生绑定,延长该变量的生命周期
	money = 1000
	
	def dajie_hobby():
		nonlocal money
		money -= 900
		print("大姐喜欢花钱,喜欢买兰博基尼,喜欢买比基尼,喜欢买channel,家里钱还剩下%d" % (money))

	def erjie_hobby():
		nonlocal money
		money += 500
		print("二姐马冬梅喜欢赚钱,喜欢上长春扎疫苗,因为假疫苗能赔偿,喜欢卖血,5块钱一瓶,家里钱赚了%d" % (money))

	def master():
		# 返回一个元组,元组里面的每一个元素是函数
		return (dajie_hobby,erjie_hobby)
		
	return master


func = majunqiang_family()
tup = func()
print(tup)
# 大姐函数
dajie = tup[0]
dajie()
# 二姐函数
erjie = tup[1]
erjie()

  

转载于:https://www.cnblogs.com/huangjiangyong/p/10835766.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值