函数作用域

Posted 老李头儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数作用域相关的知识,希望对你有一定的参考价值。

作用域由大到小分为:
built_in-------global------enclosing------locals
count=10
def add():
print(count)就认为count=10,如果要修改则函数会报错
如果一定要这样修改,可以给count一个定义:

count=10
def add():
global count
print(count)
count=4
print(count)
add()
小结
1,变量查找顺序LEGB,作用局部域>作用域外层>当前模块中的全局>python内置的作用域
2,只有模块,类,以及函数才会有作用域
3,对于一个变量,内部作用域先声明就会覆盖外部变量,不声明就会直接使用
4,内部作用域要修改外部作用于变量的值时,全局变量要使用关键字global,
嵌套作用域要使用nonlocal关键字,nonlocal时python3新增的关键字,有了这个关键字,就能完美的实现闭包了
count=4#这样会报错,因为在global域中count=10,当在函数调用
# 了count=10,函数内部enlosing域

以上是关于函数作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS作用域作用域链

JavaScript 作用域 与 作用域链

JS---闭包

JavaScript ES6 的let和const

Bash的变量类型

作用域是什么?