Python-变量作用域

    Python程序中,创建、改变、查找变量名时,都是在一个保存变量名的空间中进行,我们称之为“命名空间”,也被称之为“作用域”。python的作用域是静态的,在源代码中变量名被赋值的位置决定了该变量能被访问的范围。即Python变量的作用域由变量所在源代码中的位置决定。

    Python中,只有当变量在模块(Module)、类(Class)、函数(def、lambda)中定义的时候,才会有作用域的概念,其他如在if-elif-else、for-else、while、try-except\try-finally等关键字的语句块中并不会产成作用域。看例子:

# 场景1
def func():
    variable = 100
    print (variable)
print (variable)  #NameError: name 'variable' is not defined

# 场景2
if True:
    variable = 100
    print (variable)  #100
print ("******")
print (variable)  #100

    Python的变量作用域有4种:

  • L (Local) 局部作用域
  • E (Enclosing) 闭包函数外的函数中
  • G (Global) 全局作用域
  • B (Built-in) 内建作用域
  • 查找规则是:L –> E –> G –>B ,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找;
x = int(2.9)  # 内建作用域

g_count = 0  # 全局作用域

def outer():
    o_count = 1  # 闭包函数外的函数中
    def inner():
        i_count = 2  # 局部作用域
globalVar = 100           #G

def test_scope():
    enclosingVar = 200    #E
    def func():
        localVar = 300    #L
print __name__            #B

 

    在Python中,使用一个变量时并不严格要求需要预先声明,但在真正使用之前,它必须被绑定到某个内存对象(被定义、赋值);这种变量名的绑定将在当前作用域中引入新的变量,同时屏蔽外层作用域中的同名变量,如:

# 示例1
def func():
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值