python nonlocal 的具体原理
2020-12-13 05:31
标签:用法 原理 如何 就会 绑定 int series average new 很多文章都大概列了下nonlocal的具体用法,比如看到几篇文章写的 “nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量” 看完以后我感觉自己是懂了,其实nonlocal不是这样的 def make_average(): series=[] def average(new_value): series.append(new_value) total = sum(series) return. total/len(series) return averager average = make_average() average(10). -> 10 average(11). - >10.5 series 是make_average 的局部变量,当average=make_average()以后,make_average()已经返回了,本地作用域已经一去不返 其实在average函数中 series是自由变量,并未在本地作用域中绑定的变量 可以通过average__code__.co_varname 查看局部变量, average.__code__.co_freevars 查看自由变量 series 绑定在返回的average的__closure__属性中, average.__closure__, average__closure__[0].cell_contents 里面存储series里的数据 但如果把series改为了int 类型的不可变类型在average里面使用时就会报错,这时候如何处理,就需要加nonlocal ,它的作用就是变量申明为自由变量 python nonlocal 的具体原理 标签:用法 原理 如何 就会 绑定 int series average new 原文地址:https://www.cnblogs.com/yingchen/p/11143030.html
上一篇:java开发中,一些小的JS应用