知识点一:
#在函数外面定义的变量叫全局变量 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