python namespace and variable scope

 python 有三个名字空间:
1. 函数以及这个函数的外层函数
2. 函数所在的模块
3. built-in

python的搜索顺序从1-2-3
函数和类的属性都是属于1所在的名字空间
变量的作用域跟名字空间的地位相等,1里的变量只能在1里面被使用
2里面的变量如果在1里面没有用global声明,那么该变量只是可读,如果进行写,那么只是创建一个新的变量而已

def scope():
    print t
    def xx():
        print t
    xx()
    print t

t  = 10   
if __name__ == '__main__':
    scope()

在scope中t只是可读,如果代码变成:
def scope():
    print t
    t = 20
    def xx():
        print t
    xx()
    print t

t  = 10   
if __name__ == '__main__':
    scope()


那么在scope中会创建一个本地变量t,并且scope的第一个打印语句在创建t之前,所以会出现异常,要使用外面的t,请用global声明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值