python——局部变量与全局变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:

#!/usr/bin/python3

total = 0 # 这是一个全局变量
# 可写函数说明
def sum(arg1, arg2):
    #返回2个参数的和.
    total = arg1 + arg2 # total在这里是局部变量.
    print ("函数内是局部变量 : ", total)
    return total
 
# 调用sum函数
sum(10, 20)
print("函数外是全局变量 : ", total)
函数内是局部变量 : 30
函数外是全局变量 : 0

global 和 nonlocal 关键字

当内部作用域想修改外部作用域的变量时,就要用到 global 和 nonlocal 关键字了。

global 关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量。

global 关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global 修饰后也可以直接使用

 以下实例修改全局变量 num

num = 1
def function():
    global num  # 需要使用 global 关键字声明
    print(num) 
    num = 123
    print(num)
function()
print(num)

1

123

123

如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了。 

nonlocal 关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal 位置会发生错误(最上层的函数使用 nonlocal 修饰变量必定会报错)。 

def outer():
    num = 10
    def inner():
        nonlocal num # nonlocal关键字声明
        num = 100
        print(num)
    inner()
    print(num)
outer()
100
100

猜你喜欢

转载自blog.csdn.net/qq_55858843/article/details/127771429