开发者社区> 问答> 正文

python局部变量和全局变量的问题? 400 报错

python局部变量和全局变量的问题? 400 报错 fengfeng@fengfeng-Lenovo-XiaoXin-700-15ISK:~$ cat -n test1.py
     1    a = 1
     2    def do_something():
     3        print a
     4    
     5    do_something()
fengfeng@fengfeng-Lenovo-XiaoXin-700-15ISK:~$ python test1.py
1
fengfeng@fengfeng-Lenovo-XiaoXin-700-15ISK:~$ cat -n test2.py
     1    a = 1
     2    def do_something():
     3        print a
     4        a = 3
     5    
     6    do_something()
fengfeng@fengfeng-Lenovo-XiaoXin-700-15ISK:~$ python test2.py
Traceback (most recent call last):
  File "test2.py", line 6, in <module>
    do_something()
  File "test2.py", line 3, in do_something
    print a

UnboundLocalError: local variable 'a' referenced before assignment

为什么test2.py给a赋了一个值就出错了呢?

展开
收起
爱吃鱼的程序员 2020-06-05 13:09:06 501 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    在内部函数中修改同名全局变量之前调用该变量,引发“UnboundLocalError”错误。

    要先定义,再调用,而且对局部变量的修改不会影响全局变量的值。

    a = 1
    def do_something():
        a = 3
        print(a)
    do_something()
    print(a)



    如果要修改全局变量,可使用 global

    a = 1
    def do_something():
        global a
        a = 3
        print(a)
    do_something()
    print(a)



    2020-06-05 13:09:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载