python之函数之变量

发布时间:2026/7/23 10:24:05
python之函数之变量 变量的作用域Python中程序的变量并不是在哪个位置都可以访问的访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了哪一部分程序可以访问哪个变量Python的作用域一共有4种分别是L Local 局部作用域E Enclosing嵌套作用域 闭包函数外的函数中G Global 全局作用域B Built-in 内建作用域以 L – E – G –B 的规则查找即在局部找不到便会去局部外的局部找例如闭包再找不到就会去全局找再者去内建中找。以下案例演示各种作用域类型。Python 中只有模块module类class以及函数def、lambda才会引入新的作用域其它的代码块如 if/elif/else/、try/except、for/while等是不会引入新的作用域的也就是说这些语句内定义的变量外部也可以访问global关键字1在函数内使用 global 声明全局变量函数内使用 global 声明全局变量后可以修改全局变量2当全局变量为可变类型时函数内不使用 global 声明也可以对其进行修改。在函数中不使用 global 声明全局变量时不能修改全局变量的本质是不能修改全局变量的指向即不能将全局变量指向新的数据。不可变类型的全局变量其指向的数据不能修改所以不使用 global 无法修改全局变量。可变类型的全局变量其指向的数据可以修改所以不使用 global 也可修改全局变量nonlocal关键字nonlocal 也用作内部作用域修改外部作用域的变量的场景不过此时外部作用域不是全局作用域而是嵌套作用域。在嵌套也是函数中定义函数在里面函数中如果想修改外面定义的变量值就需要在变量前加上nonlocaldeffuncationOuter():var1100print(var1)deffuncutionInner():# nonlocal var1 var1300print(INNER,var1)funcutionInner()print(var1)funcutionInner2()deffuncutionInner2():var13000print(INNER2,var1)funcationOuter()