python基础题

学会这20个Python代码段,让你的代码更优雅:
https://zhuanlan.zhihu.com/p/90037564
20 个 Python 小技巧,让你的代码更优雅:
https://blog.csdn.net/qq_34732729/article/details/102956402
Python代码这样写更优雅(转):
https://www.cnblogs.com/gczr/p/7089587.html
Python 有哪些优雅的代码实现让自己的代码更pythonic?:
https://www.zhihu.com/question/37751951/answer/73425339
Python内存管理机制:
https://www.cnblogs.com/geaozhang/p/7111961.html

Unicode 和 UTF-8 有什么区别?
https://www.zhihu.com/question/23374078

def Maker(step): #包装器
	num=1
	def fun1(): #内部函数
		nonlocal num #nonlocal关键字的作用和前面的local是一样的,如果不使用该关键字,则不能再内部函数改变“外部变量”的值
		num=num+step #改变外部变量的值(如果只是访问外部变量,则不需要适用nonlocal)
		print(num)
	return fun1
#=====================================#
j=1
func2=Maker(3) #调用外部包装器
while(j<5):
	func2() #调用内部函数4次 输出的结果是 4、7、10、13
	j+=1

从上面的例子可以看出,调用装饰器Maker(3)时候传入的参数step=3都被记忆了下来,所以才有1+3=4、4+3=7、7+3=10、10+3=13.
从这里可以看出,Maker函数虽然调用了,但是它的局部变量信息却被保存了下来,这就是“闭包”的最大的作用——保存局部信息不被销毁。

posted @ 2021-07-19 21:33  芜湖〃  阅读(46)  评论(0)    收藏  举报
∧