Python中变量作用域

在def中定义的变量都是局部变量

def foo():
    a = 200
    print(a) 
    def fooo():
        a=a+300
        print(a)
    fooo()
    
foo()

运行得到:

UnboundLocalError: local variable 'a' referenced before assignment

也就是说在函数fooo中并没有设置变量a,从而无法进行运算

1.第一次修改

def foo():
    global a
    a=200
    print(a)
    def fooo():
        a=a+300
        print(a)
    fooo()
foo()

运行得到:

200
----------
UnboundLocalError: local variable 'a' referenced before assignment

在这次的修改中我们在函数foo中对变量a进行global的声明,但是在函数fooo中仍无法对a的值进行修改,这是因为对a进行声明后,函数fooo只对a有使用权,而没有修改权,也可以看下面的例子

a=200
def foo():
    a=a+1;
    print(a)
foo()
UnboundLocalError: local variable 'a' referenced before assignment

放在外面的a是全局变量,此时foo对a有使用但是没有修改权,但是在同一层级上则可以做修改

a=200
def foo():
    print(a)
    def fooo():
        global a
        a=a+300
        print(a)
    fooo()
foo()

运行得到:

200
500

在fooo中对a做声明后,提高了fooo对变量a操作的权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值