认识作用域
变量作用域指的是变量生效的范围,主要分为两类: 局部变量和 全局变量
局部变量
在函数中创建的变量,默认作用域是整个函数,被称为局部变量。
def testA():a = 100 # 函数体内部定义的变量print(a)testA()print(a)----------------------------------------------------------------->>> 100>>> name 'a' is not defined # 局部变量调用完即销毁所以外部无法访问
局部变量作用: 在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
全局变量
在模块中创建的变量,作用域是整个模块被称为全局变量。
a = 150 # 函数体外部定义的变量def testA():print(a)def testB():print(a)testA()testB()-------------------------------------------------------------->>> 150>>> 150
在函数外部定义的变量,如果函数体内没有定义该变量,也可以进行调用。
全局变量与局部变量存在
如果同时存在,局部变量不会受全局变量影响
a = 100def testA():print(a)def testB():a = 20print(a)testA() >>> 100testB() >>> 20print(a) >>> 100
局部变量转全局变量
通过 global 将局部变量转为全局变量
a = 100def testA():print(a)def testB():global a # 先用 global 声明变量a = 20print(a)testA() >>> 100 # 根据程序运行顺序,这一步不受影响testB() >>> 20print(a) >>> 20
多函数的执行顺序
a = 0def testA():global aa = 100def testB():print(a)print(a) >>> 0 # 打印全局变量,因为后面程序未执行testA() >>> # 修改局部变量为全局变量,并为变量重新赋值testB() >>> 100 # 执行修改后的代码
上述代码中表明 Python 程序是从上至下逐步执行,先查看函数内部是否有变量(且没有申明是外部变量),那么内部变量不会受外部同名变量影响,如果函数内部没有变量则使用外部变量作为自己的变量
