- # 知识点一:
- # 在函数外面定义的变量叫全局变量
- num = 100
- def AAA():
- '''
如果在函数中直接修改全局变量, 那么会产生异常
如果真的需要修改, 可以在函数中进行声明 (前面加入 global)
- ''
- global num
- print(num)
- num+=2
- print(num)
- def BBB():
- print(num)
- AAA() #输出 100 和 102
- # 调用函数 AAA() 后全局变量 num 的值就真的改变了
- BBB() #输出 102
- # 知识点二:
- '''
如果全局变量是可变类型, 比如列表或字典, 那么就可以在函数中直接修改;
而对于不可变类型, 比如 int, 是不能直接在函数中修改的
- ''
- nums = [11,22,33]
- info = {"name":"xiaowang","age":24}
- def test():
- print("-"*20)
- # nums.append(44) #列表可以在函数中修改
- # print(nums)
- info['name'] = 'xiaoli'
- print(info)
- def test2():
- print("="*20)
- # print(nums)
- print(info)
- test()
- test2()
- # 上述两次打印结果一样
- # 知识点三:
- # 为了防止和局部变量名字相同, 所以在全局变量前加一个 g
- # g_a = 200
- a = 200
- def test3():
- print("-"*20)
- #a+=1 #这种情况下是直接修改 a 的值, 但由于函数外的 a 是全局变量不能在函数内修改, 所以会报错
- a = 100
- '''
注意一: 这里可能是重新定义一个新的变量 a, 也有可能是修改 a 的值, 但由于全局
变量 a 不能修改, 所以此处是重新定义了一个 a;
注意二: 如果一个局部变量和全局变量名字相同, 那么用的是局部变量
- ''
- print(a)
- def test4():
- print("="*20)
- print(a)
- #print(b) # name 'b' is not defined
- #变量的使用顺序是: 局部变量 -> 全局变量, 如果两者都没有, 程序就会报错
- test3() #打印 100
- test4() #打印 200
来源: http://www.bubuko.com/infodetail-2582346.html