首先全局变量和局部变量中先引出global的概念,即声明全局变量的关键字

函数内部声明的变量叫做局部变量,函数外部声明的变量叫做全局变量,全局变量所有函数都能访问。

局部变量,就是在函数内部定义的变量。不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响。局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用。

全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。

def func():
    s = 'abcd' #局部变量
    s += 'X'
    print(s)
func()

打印时,局部变量与全局变量同名时,优先使用局部变量

函数内部的变量可以随便修改赋值,但是全局的变量不能在函数体中随便修改。

  • 在函数中不使用global声明全局变量时不能修改全局变量的本质是不能修改全局变量的指向,即不能将全局变量指向新的数据。
  • 对于不可变类型的全局变量来说,因其指向的数据不能修改,所以不使用global时无法修改全局变量。
  • 对于可变类型的全局变量来说,因其指向的数据可以修改,所以不使用global时也可修改全局变量。

可变类型:值可以修改(内存地址不变但是所保存的值变化了),引用可以修改(变量的内存地址变化了)

不可变类型:值不可以修改,可以修改变量的引用(=赋值号)。

在函数里面修改全局变量:

     1、如果全局变量是可变类型:所以在函数里面任意修改(值,引用)

     2、如果全局变量是不可变类型:在函数里面不能修改值,也不能修改引用,除非加上global 才能修改引用。

思考:全局变量可以放在哪里?

        全局变量放在调用函数之前。