来源:python中国网 时间:2020-03-15

  对于不可变类型全局变量,首先用global关键字在函数内部声明一下,然后函数内部才可以使用全局变量;如果不加global声明全局变量在函数内部不能直接用。所以对于不可变数据类型的修改,只需要global。坑就坑在你用了global但是函数内部定义了局部变量和全局变量同名的时候。先看个正常的小例子:

# -*- coding: utf-8 -*-


number = 1000

def change():
    global number
    s = number + 1
    print('函数内部',s,id(s))

change()
print('函数外部',number,id(number))  

函数内部 1001 2511023615728
函数外部 1000 2510993862352


  局部变量和全局变量同名后再看效果:

# -*- coding: utf-8 -*-


number = 1000

def change():
    global number
    number = number + 1
    print('函数内部',number,id(number))

change()
print('函数外部',number,id(number))  

函数内部 1001 2039339855600
函数外部 1001 2039339855600