🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 什么是全局变量 如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量 ~~~ # 定义全局变量 a = 100 def test1(): print(a) def test2(): print(a) # 调用函数 test1() test2() ~~~ # 修改全局变量 * 在函数外边定义的变量叫做全局变量 * 全局变量能够在所有的函数中进行访问 * 如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错 ~~~ a = 100 def testShow(): global a a = 20 print(a) testShow() ~~~ # 可变类型的全局变量 * 在函数中不使用global声明全局变量时不能修改全局变量的本质是不能修改全局变量的指向,即不能将全局变量指向新的数据 * **对于不可变类型的全局变量来说,因其指向的数据不能修改,所以不使用global时无法修改全局变量** * 对于可变类型的全局变量来说,因其指向的数据可以修改,所以不使用global时也可修改全局变量 ~~~ >>> a = 1 >>> def f(): ... a += 1 ... print a ... >>> f() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in f UnboundLocalError: local variable 'a' referenced before assignment >>> >>> >>> li = [1,] >>> def f2(): ... li.append(1) ... print li ... >>> f2() [1, 1] >>> li [1, 1] ~~~