Python全局变量和局部变量相关知识点

#知识点一:

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

猜你喜欢

转载自www.cnblogs.com/yxtz271828/p/8975729.html