#-*- 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)