#-*- coding:utf-8 -*- ''' 在python中,不存在类型的说法,导致python定义与赋值的界限并不是那么清楚 ''' num = 0 def test1(): #python中此处的num变量被理解为定义了一个num的临时变量并且完成赋值 #并非是修改全局变量num,C语言中因为存在类型,所以变量的定义与变量的赋值不会混淆,python不存在类型的概念,所以此处产生了歧义 num = 10 test1() print(num) #打印0 并没有修改变量 #在python中如果修改在函数中修改一个全局变量的值,需要使用global关键字来申明一下 def test2(): global num num = 22 test2() print("="*10) print(num) #global的作用范围只是他自己的作用域,超过作用域将没有效果 def test3(): num = 33 print("*"*10) print(num) #打印22 num的值没有发生变化
#-*- coding:utf-8 -*- #测试全局变量是否需要声明才能使用 g_list = [1,2,3,4,5] g_num =100 def tetsGlobal(): print(g_num) for a in g_list: print(a) tetsGlobal() #结果:函数中可以正常打印全局变量 #结论:如果存在全局变量与局部变量同名,需要声明全局变量,其他场景下不加也不会报错 #推荐在函数开头加上全局声明 #推荐写法 def correctFun(): global g_num print("==推荐写法===") print(g_num) g_num = 20 print(g_num) correctFun() print(g_num)