Python基础——函数——变量作用域
Python基础——函数——变量作用域
可变对象和不可变对象
全局变量:定义在函数外部的变量
局部变量:定义在函数体内的变量
#定义一全局变量total
total = 2021#不可改变————number类型
#定义一个全局变量set1
set1 = set([1,2,3])#可改变类型————set集合型
#定义一个函数
def func(a,b):
total = a+b#定义一个和全局变量同名的局部变量
#对set1作操作
set1.add(total)
return total
#调用函数
print('打印调用函数的返回值total:',func(1,3))
print('查看全局变量total:',total)
print('查看全局变量set:',set1)
输出:
全局变量和局部变量冲突时,优先使用局部变量
total = 2021#定义一个全局变量,——不可改变number类型
set1 = set([1,2,3])#定义全局变量——可变set集合类型
'''全局变量和局部变量冲突时,优先使用局部变量'''
def func(a,b):
total = a+b
set1 = set([4,5,6])
set1.add(total)
return total
print('打印调用函数的返回值total:',func(1,7))
print('查看全局变量total:',total)
print('查看全局变量set:',set1)#优先使用局部变量,全局变量未做改变
输出:
两个全局变量都没有被改变原因:
total:不可变类型
set1 :和局部变量发生冲突,从而函数使用局部变量,不调用全局变量
改变全局变量中的不可变类型
对于全局变量,在在函数内部没有global修饰时,不可变数据类型不能改变
要改变不可变全局变量,要在局部同名变量前用global修饰
可变数据类型,加不加global都可以改变
total = 2021#定义一个全局变量,——不可改变number类型
set1 = set([1,2,3])#定义全局变量——可变set集合类型
def func(a,b):
global total
total = a + b
global set1
set1 = set([4, 5, 6])
set1.add(total)
return total
print('打印调用函数的返回值total:',func(1,7))
print('查看全局变量total:',total)
print('查看全局变量set:',set1)
输出:
用global 修饰的total和set1都发生了改变