从局部变量和全局变量开始全面解析Python中变量的作用域

本文详细解析Python中的变量作用域,包括局部变量和全局变量的使用规则,如何通过global关键字定义全局变量,以及变量作用域的四种类型:L(局部)、E(闭包)、G(全局)、B(内建)。此外,文章还探讨了闭包的概念和陷阱,以及locals()和globals()函数的用途。
摘要由CSDN通过智能技术生成

无论是以类为基础的面相对象编程,还是单纯函数内部变量的定义,变量的作用域始终是Python学习中一个必须理解掌握的环节,下面我们从局部变量和全局变量开始全面解析Python中变量的作用域,需要的朋友可以参考下
理解全局变量和局部变量
1.定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是被定义为局部变量。在这种情况下,不论全局变量中是否用到该变量名,函数中使用的都是局部变量。例如:

num = 100
def func():
  num = 123
  print num
func()

输出结果是123。说明函数中定义的变量名num是一个局部变量,覆盖全局变量。再例如:

num = 100
def func():
  num += 100
  print num
func()

输出结果是:UnboundLocalError: local variable ‘num’ referenced before assignment。提示错误:局部变量num在赋值前被应用。也就是说该变量没有定义就被错误使用。由此再次证明这里定义的是一个局部变量,而不是全局变量。

2.函数内部的变量名如果是第一次出现,且出现在=符号后面,且在之前已被定义为全局变量,则这里将引用全局变量。例如:

num = 100
def func():
  x = num + 100
  print x
func()

输出结果是200。如果变量名num在之前没有被定义为全局变量,则会出现错误提示:变量没有定义。例如:

def func():
  x = num + 100
  print x
func()

输出结果是:NameError: global name ‘num’ is not defined。

3.函数中使用某个变量时,如果该变量名既有全局变量也有局部变量,则默认使用局部变量。例如:

num = 100
def func():
  num = 200
  x = num + 100
  prinx x
func()

输出结果是300。

4.在函数中将某个变量定义为全局变量时需要使用关键字global。例如:

num = 100
def func():
  global num
  num = 200
  print num
func()
print num

输出结果分别是200和200。这说明函数中的变量名n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值