时间:2021-05-22
函数的作用域
python中的作用域分4种情况:
local和enclosing是相对的,enclosing变量相对上层来说也是local。
作用域产生
在Python中,只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如if、try、for等)是不会引入新的作用域的;def、class、lambda是可以引入新作用域的。
global关键字
当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了,当修改的变量是在全局作用域(global作用域)上的,就要使用global先声明一下
count = 10def outer(): global count#必须先声明count为全局变量 print(count) count = 100 print(count)outer()nonlocal关键字
global关键字声明的变量必须在全局作用域上,不能嵌套作用域上,当要修改嵌套作用域(enclosing作用域,外层非全局作用域)中的变量时就需要nonlocal关键字了
def outer(): count = 10 def inner(): nonlocal count #此时count非全局变量,不能用global声明,需要用到nonlocal关键字 count = 20 print(count) inner() print(count)outer()作用域小结
(1)变量查找顺序:LEGB,作用域局部>外层作用域>当前模块中的全局>python内置作用域;
(2)只有模块、类、及函数才能引入新作用域;
(3)对于一个变量,内部作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量;
(4)内部作用域要修改外部作用域变量的值时,全局变量要使用global关键字,嵌套作用域变量要使用nonlocal关键字。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
python引用变量的顺序:当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量一、globalglobal关键字用来在函数或其
JavaScript的作用域以函数为界,不同的函数拥有相对独立的作用域。函数内部可以声明和访问全局变量,也可以声明局部变量(使用var关键字,函数的参数也是局部
swiftguard关键字详解及使用Swift提供guard关键字,guard关键字可以简化繁琐的判断逻辑?12345678910111213141516fun
详解Python中LEGB和闭包及装饰器LEGBL>E>G?BL:local函数内部作用域E:enclosing函数内部与内嵌函数之间G:global全
一、Python函数中的参数1、使用python的函数时,有参数类别,比如位置参数、关键字参数、可变长参数2、位置参数、关键字参数很好理解,关键是可变长参数经常