'''
全局变量
1.一个文件中没有函数,该文件中的变量时全局变量吗!若是,他能被修改,若不是,它不在函数内?!
是全局变量,全局变量不是不能更改,可以更改。而是在函数内改时要么在外部局部变量失效,要么需要glable引入全局变量。
2.函数1中有一个函数2,一个变量l,在函数2中能够使用l吗?
不能,因为次变量不存在函数2内
'''
# # 函数内,执行过不允许修改,要加global
# 1.不可变数据:基本数据类型全局变量在函数内一般修改会报错。
# 原因是在修改时函数内部变量与全局变量重名,该变量变成了局部变量,使用时在声明前会报错。
# 但若在声明后使用虽然不会报错,但在函数外部调用时,改变不起作用。因此修改时用globle引入全局变量,组合数据类型也是
# 2.可变数据类型:复杂数据类型内部的数据如list[1]\set{1}可以修改,但不能直接修改该复杂数据
# 总结:函数外部访问全局变量,不能访问局部变量;\
# 函数内部访问的变量与全局变量重名时,引入globle后该变量是全局变量,没有引入时,该变量是局部变量
# 变量的使用一定要放在声明之前
# 全局变量的改变执行后(在函数内改变时需要执行该函数),无论在哪里调用该变量,都已经发生了变化\
# 若没有执行,或者在执行之前不会发生变化。
# 局部变量:定义在函数内
# 全局变量:定义在函数外
# name_all="k"
# def i():
# name="j"
# print("name_all 2",name_all)#name_all 2 k
# print("局部变量name",name)#局部变量name j
# # print(name)局部变量外部访问出红线
# i()
# print("name_all 1",name_all)#name_all 1 k
#1
# name_all="k"
# def i():
# print("name_all 2",name_all)#有红线,但运行时不会报错原因是没有调用该函数
# name_all="j"
# print("name_all 2",name_all)
# print("name_all 1",name_all)#name_all 1 k
#2
# name_all="k"
# def i():
# print("name_all 2",name_all)#有红线,运行时报错
# name_all="j"
# print("name_all 2",name_all)
# i()#local variable 'name_all' referenced before assignment 赋值前引用的局部变量'name_all'
# print("name_all 1",name_all)#name_all 1 k
#
# name_all="k"
# def i():
#
# global name_all
# print("name_all 2", name_all)#name_all 2 k
# name_all="j"
# print("name_all 2",name_all)
# i()#name_all 2 j
# print("name_all 1",name_all)#name_all 1 j
# name_all="k"
# def i():
# print("name_all 2", name_all)#name 'name_all' is used prior to global declaration name 'name_all'用于全局声明之前
# global name_all
# name_all="j"
# print("name_all 2",name_all)
# i()
# print("name_all 1",name_all)
# 2.可变数据
# name_all=[]
# def i():
# print("name_all 2", name_all)#name_all 2 []
# name_all.append("l")
# i()
# print("name_all 1",name_all)#name_all 1 ['l']
# name_all=[]
# def i():
# print("name_all 2", name_all)#local variable 'name_all' referenced before assignment
# name_all=list()
# print(name_all)
# i()
# print("name_all 1",name_all)#