首页 > 其他 > 详细

函数作用域

时间:2020-02-27 15:33:37      阅读:54      评论:0      收藏:0      [点我收藏+]

  python中的作用域分4种情况

L:local,局部作用域,即函数中定义的变量;

E:enclosing, 嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;

G:global,全局变量,就是模块级别定义的变量;

B:built-in, 系统固定模块里面的变量,比如int,bytearray等。搜索变量的优先级顺序是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。例如

 1 x = int(2.9)  # int  built-in
 2 g_count = 0   # global
 3 o_count = 4
 4 def outer():
 5     o_count = 1  # enclosing   父子局部作用
 6     def inner():
 7         i_count = 2    #  local 本地作用
 8         print(o_count)  # 从里到外找
 9         print(i_count)
10     inner()
11 outer()
12 输出:
13 1
14 2

#####在局部作用域里面不能修改全局变量

在函数中引入全局变量就不能对全局变量进行修改    错误实例

1 count = 10
2 def test():
3     print(count)  # 报错
4     count = 2   # print已经引入count变量,就不能重新进行赋值
5 def test1():
6     count = 3    # 表示在局部变量中进行重新定义。所以不报错
7 输出:
8 1
9 2

想修改全局变量,只需加上global

修改上一级的变量使用nonlocal

函数作用域

原文:https://www.cnblogs.com/ch2020/p/12372338.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!