Python 全局变量

#-*- 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)
原文地址:https://www.cnblogs.com/zhanggaofeng/p/9229967.html