一、局部作用域和全局作用域
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。
实例:
total = 1 # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):
#返回2个参数的和."
total = arg1 + arg2 # total在这里是局部变量.
print ("函数内是局部变量 : ", total)
return total
#调用sum函数
sum( 30, 20 )
print ("函数外是全局变量 : ", total)
输出结果:
函数内是局部变量 : 50
函数外是全局变量 : 1
二、global关键字
如果您需要创建一个全局变量,但被卡在本地作用域内,则可以使用 global 关键字。global 关键字使变量成为全局变量。
实例:
a = 1
def func():
global a # 在使用a之前用global
a += 1
func()
print("函数外 a = ", a)
输出结果:
函数外 a = 2
三、nonlocal关键字
对于嵌套函数中的内层函数而言,通过nonlocal可以使用外层函数而global不可以。
实例:
a = 3
def func():
a=2
def inner():
nonlocal a
a = 1
inner()
print("函数中 a = ", a)
func()
输出结果:
函数中 a = 1