1.变量作用域
变量作用域决定了哪一部分的程序可以访问哪一个变量,python的变量作用域可以分为四种:
局部作用域、闭包函数外的函数中、全局作用域、内建作用域。程序会先在局部作用域中寻找变量,没找到的话,会去闭包函数外的函数中找,如果还是没找到的话,会去全局作用域找,如果还没找到,会去内建作用域寻找。
各作用域如下面代码所示
x = int(2.9) # 内建作用域
g_count = 0 # 全局作用域
def outer():
o_count = 1 # 闭包函数外的函数中
def inner():
i_count = 2 # 局部作用域
2.全局变量与局部变量
全局变量:定义在函数外的变量,就是全局变量
局部变量:定义在函数内的变量,就是局部变量
total = 0 # 这是一个全局变量
# 可写函数说明
def sum(arg1, arg2):
# 返回2个参数的和."
total = arg1 + arg2 # total在这里是局部变量.
print("函数内是局部变量 : ", total)
return total
# 调用sum函数
sum(10, 20)
print("函数外是全局变量 : ", total)
3.global与nonlocal关键字
global用于局部作用域修改全局作用域变量,如下代码
num = 1
def fun1():
global num # 需要使用 global 关键字声明
print(num)
num = 123
print(num)
fun1()
print(num)
nonlocal用于局部作用域修改外层非全局作用域变量,如下代码
def outer():
num = 10
def inner():
nonlocal num # nonlocal关键字声明
num = 100
print(num)
inner()
print(num)
outer()