一、作用域:可以被影响的范围
全局变量:在最外层声明的变量
局部变量:在某些代码块声明的变量
xxx=100 #最外层的变量,全局变量
def p():
ddd=300 #在函数体内部,局部变量
#global xxx
xxx=200 #与全部变量同名的局部变量
print(xxx)
p()
#说明:外面一层的变量能够被代码块内部一层的变量调用
yyy=200
def p2():
print(yyy)
#yyy=100 #报错
局部变量的注意事项:
1、在函数体内部声明的变量不能在函数体外部去调用,会直接报错
2、在函数体内部同名的全局变量即使重新赋值了,也不会影响函数体外部的那个同名全局变量,如果真的想要改变外部同名的全局变量,那么我们必须要在函数内部使用global关键字声明
3、在函数体内部如果先调用外部的全局变量后是不能再次修改的,因为在函数体内部写了同名的变量后会使得编译器无法识别局部变量还是全局变量,使得程序异常
二、命名变量
如果在函数内部和外部操作同名变量,Python 会将它们视为两个单独的变量,一个在全局范围内可用(在函数外部),而一个在局部范围内可用(在函数内部):
x = 100
def myfunc():
x = 200
print(x)
myfunc()
print(x)
三、global关键字
使用global关键字可以将局部变量声明为全局变量
number=20 #定义全局变量
def test():
global number #使用global声明变量number为全局变量
number+=1
print(number)
test()
print(number)
四、nonlocal关键字
使用nonlocal关键字可以在局部作用域中修改嵌套作用域中定义的变量
def test():
number=23
def test_in():
nonlocal number
number=20
test_in()
print(number)
test()