'''
局部变量(仅限在函数内部使用)--某个班级的风扇和空调
全局变量()--公共的,饮水机,每个班级都可以去打水
局部变量值可以在函数内部修改
当全局变量的值是不可变类型的,比如字符串,则不允许在函数内部修改,如果要修改则需要用global修饰 且声明在函数体的第一句
如果是可变类型的,则可以之间在函数内修改全局变量
总结:# 不可变的全局变量如果在内部函数需要修改必须用global修饰
# 不可变的外部函数的局部变量如果在内部函数需要修改必须用nonlocal修饰
# 可变变量可直接在内部函数修改
# 内部函数可以直接访问外部函数的局部变量以及该项目的全局变量
当在函数内,局部变量与全局变量同名,则使用局部变量的(就近原则)
'''
name='yueyue'#全局变量
def func2():
name='小月月'#局部变量与全局变量同名
name+='弹吉他的小美女'
print(name)#小月月弹吉他的小美女
def func3():
print(name)
# name+='会弹吉他' 报错,全局的改变不了,上面那个改的了是因为他改的其实是局部变量的name
def func4():
global name #如果要修改全局的name则需要加上global
print(name)#yueyue
name+='会弹吉他'
print(name)#yueyue会弹吉他
func2()
func4()
print('---------------')
#内部函数
'''
特点:
1.可以访问外部函数的变量
2.内部函数可以修改外部函数的《可变类型》的变量,比如list1
'''
f=100#不可变全局变量 修改用global
def func():
#声明变量
a=100 #不可变局部变量 修改用nonlocal
list1=[3,6,9,4] #可变局部变量
#声明内部函数
def inner_func():
#a不用nonlocal修饰然后对其进行修改会报错
nonlocal a
#对list1里面的元素进行加n操作
for index,i in enumerate(list1):
list1[index]=i+a #可以直接修改外部函数的可变类型变量
list1.sort()
# 不可变的全局变量如果在内部函数需要修改必须用global修饰
# 不可变的外部函数的局部变量如果在内部函数需要修改必须用nonlocal修饰
# 可变变量可直接在内部函数修改
a+=101
inner_func() #调用内部函数
print(list1)
print(a)
#调用外部函数
func()
python--总结之全局局部变量
最新推荐文章于 2022-04-15 20:58:36 发布