python中的作用域有哪些
这篇文章主要介绍python中的作用域有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
python中的作用域有4种:
搜索变量的优先级顺序依次是(LEGB):
作用域局部 > 外层作用域 > 当前模块中的全局 > python内置作用域。
number=10#number是全局变量,作用域在整个程序中deftest():print(number)a=8#a是局部变量,作用域在test函数内print(a)test()
运行结果:
108
defouter():o_num=1#enclosingi_num=2#enclosingdefinner():i_num=8#localprint(i_num)#local变量优先print(o_num)inner()outer()
运行结果:
81
num=1defadd():num+=1print(num)add()
运行结果:
UnboundLocalError:localvariable'num'referencedbeforeassignment
如果想在函数中修改全局变量,需要在函数内部在变量前加上global关键字。
num=1#global变量defadd():globalnum#加上global关键字num+=1print(num)add()
运行结果:
2
同理,如果希望在内层函数中修改外层的 enclosing 变量,需要加上 nonlocal 关键字
defouter():num=1#enclosing变量definner():nonlocalnum#加上nonlocal关键字num=2print(num)inner()print(num)outer()
运行结果:
22
另外我们需要注意的是:
1.只有模块、类、及函数才能引入新作用域;
2.对于一个变量,内部作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量(这时只能查看,无法修改);
3.如果内部作用域要修改外部作用域变量的值时, 全局变量要使用 global 关键字,嵌套作用域变量要使用 nonlocal 关键字。
以上是python中的作用域有哪些的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。