1.变量起作用的代码范围被称为变量的作用域,不同作用域内的变量互不影响。在函数内部定义的变量为局部变量,在函数外部定义的变量为全局变量。


2.局部变量只在定义它的函数体内有效,在函数外即使使用同名的变量,也会被认为是另一个变量。



3. 全局变量在定义后的代码中都有效,包括它后面定义的函数体内,即若函数体内和函数体外的变量同名同值,该变量为隐式的全局变量。如果全局变量与局部变量同名不同值,则在定义局部变量的函数中,只有局部变量有效,即局部变量覆盖掉同名的全局变量。


4.若一个变量已经在函数外定义,在函数内需要修改这个变量的值,可以在函数内通过global关键字来声明这个变量为全局变量。若一个变量并未在函数外定义,在函数内直接使用global关键字将一个变量声明为全局变量,在调用这个函数后,将自动增加新的全局变量。


5.当函数运行结束后,在函数内部定义的局部变量会被自动删除而不可访问,而在函数内部定义的全局变量仍然可以访问。


6.一般而言局部变量的引用比全局变量速度快,应该优先考虑。除非真的必要,应该避免使用全局变量,因为全局变量会增加不同函数之间的隐式耦合度,降低代码可读性,使得代码测试和纠正变得困难。


7.如果需要在一个程序的不同模块之间共享全局变量,可以编写一个专门的模块来实现这一目的。

例如在模块A.py中有如下变量定义:

a= 0


而在模块B.py中,包含以下语句:

import A
A.a = 1

在模块C.py 中有以下语句:

import A
print(A.a)

从而在不同模块之间共享全局变量。