变量作用域 l e g b

全局变量和局部变量
局部变量:
  定义在函数内部的变量称为局部变量(包含函数的形参)
说明:
  局部变量只有在函数调用时存在
全局变量:
  定义在函数的外部,模块的内部的变量称为全局变量
python 的作用域
  作用域也叫命名空间(namespace), 是访问变量时查找变量名的范围空间
python的四个作用域LEGB
局部作用域(函数内)    Local(Function)            L
外部嵌套函数作用域    Enclosing Function locals  E    nonlocal
函数定义所在模块的作用域 Global(module)           G
python内置模块的作用域  Builtin(Python)          B

变量名的查找规则:
  在访问变量时,先查找本地变量(局部变量), 然后是包裹此函数外部的函数内部的变量,之后是全局变量,最后是内置变量
    L  ->  E  -> G  -> B


在默认的情况下,变量名赋值会创建或者改变本地作用域的变量

  
global  语句
作用:
  告诉解释执行器,global语句声明的一个或多个变量,这些变量的作用域为模块及的作用域,也称作全局变量
  全局声明将赋值变量映身到械块文件内部的作用域


语法:
  global 变量1, 变量2, ...



global 说明:
   1. 全局变量如果要在函数内部赋值,则必须经过全局声明(否则会被认为是局部变量)
   2. 全局变量在函数内部不经过声明就可以直接访问(如果变量已经关联一个对象)
   3. 不能先声明局部变量,再用global声明为全局变量,此做法不附合语法规则
   4. global变量列表里的变量名不能出现在此作用域的参数列表里


nonlocal 语句  Enclosing Function locals  E 
作用:
  告诉解释执行器,nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量
语法:
  nonlocal 变量名1, 变量名2, ...



nonlocal说明:
  1. nonlocal 语句只能在被嵌套函数内部进行使用
  2. 访问nonlocal变量将对外部嵌套函数作用域内的变量进行操作
  3. 当有两层或两层以上函数嵌套时,访问nonlocal变量只对最近的一层变量进行操作
  4. nonlocal语句的变量列表里的变量名不能出现在此函数的参数列表里




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值