python基础知识保存每次变量值或闭包的简单应用示例

我们想实现每次都能保存变量时可以使用global 关键字

a = 1
def paobua(b):
	global a     # global 声明a是全局变量,而不是局部变量
	naw = a + b  # 每次调用全局变量a来和b相加
	a = naw      # 重新定义全局变量a的值
	return a     

print(paobua(2)) # 打印3
print(paobua(3)) # 打印6
print(paobua(6)) # 打印12

 

另外还可以使用闭包的方式,下面是一个简单的示例:

闭包的优势在于记忆住上一次调用的状态,而使用全局是一种糟糕的行为,并且全局变量有可能会被其他函数或代码改变。而闭包就不会出现这种问题。

闭包 = 函数+环境变量(环境变量就是下面的cs,而css属于本地局部变量)

shu = 0

def chn(cs):
	def usa(css):
		nonlocal cs     # 声明cs不是本地局部变量
		naw = cs + css  # 将cs与css相加(css来源于下面的s(数值))
		cs = naw        # 将cs重新赋值并保存
		return cs
		# 返回数值cs
	return usa
	# 返回函数usa实现闭包

s = chn(shu)  # 实例化chn函数并将shu变量作为实参传递到chn当中

print(s(2))   # 打印2
print(s(3))   # 打印5
print(s(6))   # 打印11

print(s.__closure__[0].cell_contents)  # 获取闭包内部的变量

需要注意的是环境变量因为要常驻内存会造成内存泄露(内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值