函数的变量作用域
在函数中声明变量的有效使用范围就是函数的变量作用域。
变量一共分为2大类:
全局变量
在函数外部声明的变量就是全局变量。
局部变量
在函数内部声明的变量就是局部变量
局部变量和全局变量的作用范围
1.全局变量在全局范围内可以使用
2.全局变量在局部范围内可以使用(访问)
3.局部变量在局部范围内可以使用
4.局部变量在全局范围内无法正常使用
global 关键字
global 关键字的作用是提升局部变量为全局变量
使用global关键字即可提升局部变量为全局变量
def 函数名()
#提升局部变量为全局变量
global 局部变量
其他操作...
全局变量和局部变量同名
在此情况下,局部环境中只会使用局部变量,忽略同名的全局变量.
内部函数
在函数内部声明的函数就是内部函数.
特征:
1.内部函数在函数内部可以访问
2.内部函数的调用必须在定义内部函数之后
3.内部函数不可以在函数外部调用
4.本质上内部函数等同于内部变量
闭包
闭包就是将函数内部的局部变量或者内部函数,弄到函数外,并且可以正常使用的特殊方法.突破了局部作用域的限制!
注意:闭包少用!
闭包格式:
def 外层函数():
局部变量
局部变量
...
def 内部函数():
pass
def 内部函数():
pass
return (局部变量,局部变量...内部函数,内部函数...)
nonlocal关键字
nonlocal的作用是声明当前变量不是当前函数内部的变量,他有可能是当前函数的外部变量(不是全局变量)
def 外部函数()
局部变量
def 内部函数():
nonlocal 变量名#声明当前变量不是内部函数中的变量
其他代码...
return 代码