python之闭包函数

一、大前提
闭包函数 = 名称空间与作用域+函数嵌套+函数对象
核心点:名字的查找关系是以函数定义阶段为准

二、什么是闭包函数
‘闭’函数指的是该函数是内嵌函数
‘包’函数指的是该函数包含对外层作用域名称的引用(不是对全局作用域)

闭包函数之名称空间与作用域的应用+函数嵌套

def f1():
	def f2():
		pass
	#闭包函数之名称空间与作用域的应用+函数嵌套
def f1():
	x = 3333
	def f2():
		print(x)
	f2()

x = 111
def bar():
	x = 4444
	f1()

def foo():
	x = 2222
	bar()

foo()  # 结果为3333,名称空间!!要一眼看出答案
#该函数仅做到了‘闭’

闭包函数之函数对象

def f1():
	x = 333
	def f2():
		print('函数f2',x)
	return f2

f = f1()
print(f)
f()

def foo():
	x = 555
	f()

foo()

三、闭包函数的应用场景
两种为函数体传参的方式
方式一:直接把函数体需要的参数定义成形参

def f2(x):
	print(x)

f2(1)
f2(2)
f2(3)

方式二:

def f1(x):
	#x = 3
	def f2():
		print(x)
	
	return f2
x = f1(1)
print(x)
x()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值