参考http://www.runoob.com/python3/python3-function.htmlhtml
Python 中,程序的变量并非在哪一个位置均可以访问的,访问权限决定于这个变量是在哪里赋值的。python
变量的做用域决定了在哪一部分程序能够访问哪一个特定的变量名称。Python的做用域一共有4种,分别是:闭包
以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。函数
Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的做用域,例如只定义在函数中,就是局部变量,外部就不能访问。ui
其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的做用域的,也就是说这些语句内定义的变量,外部也能够访问。3d
total = 0 #全局变量
def sum(arg1,arg2):
total = arg1 + arg2 #total在这里是局部变量
print("函数内是局部变量: ",total)
return total
sum(10,20) #调用sum函数
print("函数外是全局变量: ",total)
#内部做用域想要修改外边做用域的变量,须要用到global和nonlocal关键字num = 1def fun1(): global num #用global关键字声明 print(num) num = 123 print(num)fun1()print(num)def outer(): num = 10 def inner(): nonlocal num num = 100 print(num) inner() print(num)outer()