全局变量和局部变量
局部变量和全局变量重名,在局部函数定义域中局部变量生效
1)如果想在局部函数中修改赋值同名的全局变量(不可变类型),在局部函数中加global 变量名
2)对于可变类型,如列表,不用加Global, 也可以对其内部元素进行操作,对全局变量也不能赋值(=操作)
3)在函数体内写global一定要在最开始写,防止冲突报错
4)为了防止出现冲突报错,全局变量大写,局部变量小写
telma = "Chris"
def f1():
telma = "John"
print("~~~~局部变量和全局变量同名,局部变量生效~~~~")
print(telma)
def f2():
print("~~~~没有定义局部变量,全局变量生效~~~~")
print(telma)
def f3():
global telma
telma = "Tom"
print("~~~~在局部函数中更改全局变量~~~~")
print(telma)
f1()
f2()
f3()
f2()
~~~~局部变量和全局变量同名,局部变量生效~~~~ John ~~~~没有定义局部变量,全局变量生效~~~~ Chris ~~~~在局部函数中更改全局变量~~~~ Tom ~~~~没有定义局部变量,全局变量生效~~~~ Tom
telmaList = ["John","Jack","Tom"]
def f1():
telmaList = ["Happy","Moon"]
def f2():
telmaList.append("Chris")
print("~~~~~~没有global无法通过=对全局变量赋值~~~~~~~~~~")
f1()
print(telmaList)
print("~~~~~没有global,对于可变类型可以改变内部元素~~~~~")
f2()
print(telmaList)
~~~~~~没有global无法通过=对全局变量赋值~~~~~~~~~~ ['John', 'Jack', 'Tom'] ~~~~~没有global,对于可变类型可以改变内部元素~~~~~ ['John', 'Jack', 'Tom', 'Chris']
telma = "Jack"
def f1():
telma = "Mike"
print(telma)
def f2():
nonlocal telma
telma = "Chris"
f2()
print("~~~~~~~nonlocal对上一级变量生效~~~~~~")
print(telma)
f1()
print("~~~~~nonlocal对global变量不生效~~~~~~~")
print(telma)
Mike ~~~~~~~nonlocal对上一级变量生效~~~~~~ Chris ~~~~~nonlocal对global变量不生效~~~~~~~ Jack
浙公网安备 33010602011771号