工厂函数—闭包

闭包-函数嵌套

简单理解闭包

def f1():
	print("外层函数1")
	def f2():
		print("内层函数")
	return f2

以上就是一个简单的闭包函数代码。

注意:函数名()表示函数的调用,不带括号,函数可以看作是一个变量。

>>> def f1():
	print("first")
	def f2():
		print('second')
	return f2

>>> res = f1()
first
>>> res()
second
>>> res()
second
>>> res()
second

函数里嵌套函数,外层函数返回内层函数的函数名,这种情况成为闭包

外层函数的变量为了在函数执行后依然在内存中保留,我们把变量包在内层函数存放,内层函数不调用,不执行,不释放

小实例

def f1(num1):
	print('你好,您的第一个乘数为{}'.format(num1))
	def f2(num2):
		print('你好,您的第二个乘数为{},它们的积为{}'.format(num2,num1*num2))
	return f2

>>> total = f1(30)
你好,您的第一个乘数为30
>>> total(40)
你好,您的第二个乘数为40,它们的积为1200
>>> total(50)
你好,您的第二个乘数为50,它们的积为1500
  1. 函数内的变量,函数外访问不了,因为在不声明的情况下,这是局部变量。
  2. f2函数执行完毕后,函数内的变量会被摧毁
  3. 应用场景:如果我们需要在执行完毕后,把函数中的某个变量保存下来
  4. 操作:在函数内部去定义一个函数,用这个内部函数去引用这个变量,同时将内层函数的函数名当做返回值返回,不调用
  5. 这个时候内层函数就会将需要保留的变量给包含在它的内存空间了,这就是闭包。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值