python 3 函数作用域的正确使用

2025-05-22 05:33:55

1、python的函数是first c盟敢势袂lass的,可以像变量一样使用,也可以嵌套定义,如图所示。内层函数fb读取了外层变量var1的值。

python 3 函数作用域的正确使用

2、如果内层函数对外层某个变量只有读取,如图fb读取外层var1变量,无需特别声明,在内层即可使用外层值。

python 3 函数作用域的正确使用

3、但是,如果内层函数希望写外层变量的值,如图添加var1=6语句是不够的。这样会造成将var1变为内层变量,上一句读取语句也报错了。

python 3 函数作用域的正确使用

4、如果希望在内层函数写外层变量,需要使用nonlocal关键字声明之。此时,读写var1会在外层寻找。

python 3 函数作用域的正确使用

5、当有多个层次都有同名变量var1时,nonlocal会取最近一层的变量var1来用。如图,内层函数对最外层的全局var1无影响。

python 3 函数作用域的正确使用

6、但是,如果想直接读写全局变量,则需要使用global关键字。此时,最内层函数直接读写全局var1。

python 3 函数作用域的正确使用

7、python的函数可以作为返回值,孀晏弁钾也可以构造闭包。如图所示,使用counter_constructor构造了一个函数闭包,可以用来计数。

python 3 函数作用域的正确使用

8、变量count_val相对于内层函数func会作为func的闭包一起返回,但是每次调用counter忧溲枷茫_constructor时,都会产生新的count_val。所以多个闭包互补干扰,有各自的count_val,如图所示。

python 3 函数作用域的正确使用

9、如图也是一个常见的通过闭包生成不同功能函数的使用情景。相当于先确定函数的部分参数。

python 3 函数作用域的正确使用
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢