商业网站建设规划书,工作室注册流程及需要的材料,如何建设一个静态网站6,vue手机网站开发分类目录#xff1a;《系统学习Python》总目录 我们在某些情况下可能想要共享全局状态。如果我们真的想要每个函数都有自己的计数器#xff0c;要么像前面的文章那样使用类#xff0c;要么使用Python3.X中的闭包函数#xff08;工厂函数#xff09;和nonlocal语句。由于这…分类目录《系统学习Python》总目录 我们在某些情况下可能想要共享全局状态。如果我们真的想要每个函数都有自己的计数器要么像前面的文章那样使用类要么使用Python3.X中的闭包函数工厂函数和nonlocal语句。由于这条新语句允许修改外层函数作用域变量因此这些变量可以充当每次装饰各自拥有的可修改数据。下面的代码仅在Python3.X中运行
def tracer(func):calls 0def wrapper(*args, **kwargs):nonlocal callscalls 1print(call %s to %s % (calls, func.__name__))return func(*args, **kwargs)return wrappertracer
def spam(a, b, c):print(a b c)tracer
def eggs(s, y):print(x ** y)span(1, 2, 3)
span(a4, b5, c6)
eggs(2, 16)
eggs(4, y4)
现在由于外层作用域变量不能跨程序而成为全局的因此每个被包装函数再次有了自己的计数器就像是用类和属性实现的一样。这里是在3.X下运行后新的输出
参考文献 [1] Mark Lutz. Python学习手册[M]. 机械工业出版社, 2018.