Python变量的作用域(局部变量、全局变量)

变量的作用域指的是程序代码可以访问该变量的范围。它主要分为全局变量和局部变量。

全局变量

全局变量指的是函数体外定义的变量,可以作用于函数内、外。(可变范围大,不利于维护)

a = 111  # 全局变量
def fun():
    print('我在函数内部,',a)

print(a)
fun()
图片[1]-Python变量的作用域(局部变量、全局变量)-尤尤'blog

如果在函数内部和函数外部操作同名变量,Python 会将他们看作是两个单独变量,一个在函数外部可用,一个在函数内部可用:

a = 100  # 全局变量

def fun():
    a = 200    # 局部变量
    print(f'我是在函数内部定义的a:{a}')

# 在函数内部打印的是局部变量a
fun()   # 200

# 打印的是全局变量a
print(a)    # 100
图片[2]-Python变量的作用域(局部变量、全局变量)-尤尤'blog

注意:在使用变量的时候,优先在当前作用域中寻找该变量,如果有就使用,没有就到上级作用域中寻找,以此类推,直到找到全局作用域,若依然没找到,则抛出异常 NameError

局部变量

在函数内部定义并使用的变量,只能在函数内部使用。如果局部变量在函数外部使用,它就超出了作用域,会抛出异常 NameError。

局部变量在函数内部,用于临时保存数据,当函数调用完成后,Python 解释器就将变量回收销毁了。

不同的函数中,可以定义同名的局部变量,之间不会产生影响。

局部变量的作用

用于临时保存在函数内部需要使用的数据。

def fun_add(a,b):   # a,b是函数的形参,作用范围也是函数内部,相当于局部变量
    sum1 = a + b     # sum在函数内部定义的,称为局部变量
    print(sum1)

print(sum1) # NameError: name 'sum1' is not defined. Did you mean: 'sum'?
图片[3]-Python变量的作用域(局部变量、全局变量)-尤尤'blog

如何将局部变量变成全局变量 —-> global关键字

如果想要把一个局部变量修改成全局变量,可以使用global关键字。

例如在函数中定义一个变量 aa = 200,在函数外无法访问,会报错,如果想要将局部变量 aa 变成全局变量,让我们可以在函数外部访问它,可以使用 global 关键字。

# def fun():
#     aa = 200
# 无法访问局部变量
# print(aa)    # NameError: name 'aa' is not defined. Did you mean: 'a'?

# 将上面代码修改一下
def fun():
    global aa   # 使用global关键字修饰的变量会变成全局变量
    aa = 200

# 调用fun,global将局部变量修改为全局变量
fun()
print(aa)    # 200
图片[4]-Python变量的作用域(局部变量、全局变量)-尤尤'blog

对于一个全局变量,在函数内如果给它重新赋值,也只是声明了一个同名的局部变量,是不会影响全局变量的值的。但我们可以使用global关键字在函数内部修改全局变量的值:

a = 100  # 全局变量
def fun():
    global a   # 将a声明为全局变量
    a = 200    # 给变量a重新赋值

# 打印的全局变量a
print(a)    # 100

# 调用fun,修改了全局变量的值
fun()

# 打印的是修改后的全局变量a
print(a)    # 200
图片[5]-Python变量的作用域(局部变量、全局变量)-尤尤'blog
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容