闭包的特点

# ### 闭包的特点
# (1)闭包的特点:
'''

    内函数使用了外函数的局部变量,外函数的局部变量与内函数发生绑定,延长该变量的生命周期
    (实际内存给它存储了这个值,暂时不释放)
'''
def outer(num):
	
	def inner(val):
		return num + val
	return inner
	
func = outer(10)  # func = inner
res = func(21)   # func(21) = inner(21)
print(res)       # res = num + val =  10 + 21 = 31
'''
代码解析:
	num 接收到普通实参10 此刻 num = 10
	func = outer(10)  # func = inner
	res = func(21)    # func(21) = inner(21)
	print(res)        # res = num + val =  10 + 21 = 31
'''

# (2) 闭包的意义
# 模拟鼠标点击的操作
'''
# 如果使用全局变量num来进行统计,因为作用域太大,容易造成漏洞.不安全
num = 0
def click_num():
	global num
	num+=1
	print(num)
# 调用一次函数,累加一次num 
click_num()
click_num()
click_num()

num = 100
click_num()
click_num()
'''

# 闭包的意义:
'''
	闭包可以优先使用外函数中的变量,并对闭包中的值起到了封装保护的作用.外部无法访问.
'''
def click_num():
	num = 0
	def func():
		nonlocal num
		num+=1
		print(num)
	return func

click_num = click_num()
click_num()
click_num()
click_num()
num = 100
click_num()
click_num()

  

猜你喜欢

转载自www.cnblogs.com/huangjiangyong/p/10835768.html