知识点:当全局变量和局部变量重名时,局部变量中的变量参数起作用,其他地方全局变量参数起作用。
定义一个全局变量name,然后用定义一个函数为把name改成大写
name = "abc"
def change_name(name):
print('改名之前:',name)
name = "ABC"
print("改名之后:",name)
change_name(name)
print(name)
结果:
改名之前: abc
改名之后: ABC
abc
name = "abc"是全局变量
name = "ABC"是局部变量,
在函数内,局部变量只在函数内生效,不会影响全局变量
在函数内定义全局变量,使用global参数
name = "abc"
age = 22
def change_name(name):
global age
print('改之前:',name,age)
name = "ABC"
age = 33
print("改之后:",name,age)
change_name(name)
print(name)
print(age)
结果:
改之前: abc 22
改之后: ABC 33
abc
33
在函数中定义了age = 33,由于使用了glogal参数,因此函数内的age成了全局变量。
一般不在函数中直接定义全局变量。
如果变量是不是字符或者整型,如字典,元组,列表,集合等,那么函数内,局部变量是可以更改全局变量的
例子:定义一个列表,在函数内更改列表的内容
names = ["a","b","c","d"]
print("更改之前:",names)
def change():
names[0] = "A"
names[2] = "C"
print("更改之前:",names)
change()
print("验证:",names)
结果:
更改之前: ['a', 'b', 'c', 'd']
更改之前: ['A', 'b', 'C', 'd']
验证: ['A', 'b', 'C', 'd']