2022年 11月 9日

Python 全局变量

a = 1

def test():
    print(a)


if __name__ == "__main__":

    global a
    a = 2
    test()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

运行后,出现错误:
global a
^
SyntaxError: name ‘a’ is assigned to before global declaration

原因:
if __name__ == "__main__": 中的变量都是全局的,所以再一次声明global是错误的,系统会发出警告。

a = 1

def test():
    print(a)
    
if __name__ == "__main__":
    a = 2
    test()

>> 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

函数内部更改全局变量的值:

a = 1

def test():
   global a
   a = 3

def test1():
    print(a)


if __name__ == "__main__":

    a = 2
    test1()
    test()
    test1()
    
>>
2
3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20