python变量作用域、global关键字

发布时间 2023-09-13 00:09:31作者: 七落安歌

python:变量作用域、global关键字

全局变量、局部变量

全局作用域:在函数外

局部作用域:在函数内部

num1 = 10  # 全局变量


# 全局作用域:在函数外部

def func():
    # 局部作用域:在函数内部
    num2 = 20  # 局部变量
    sum1 = num1 + num2  # 在局部作用域中可以访问全局变量,而在全局作用域中无法访问局部变量
    return sum1

全局变量的访问范围:全局变量即在全局作用域(函数的外部)中定义的变量

既可在全局作用域中访问,也可以在局部作用域中访问。

局部变量的访问范围:局部变量即在局部作用域(函数的内部)中定义的变量

局部变量只能在局部作用域中访问

扩展:内存垃圾回收机制

  • 因为函数执行完毕之后,其内部的局部变量与程序都要被计算机的内存所回收!
  • 又由于局部变量一般只在函数调用时使用,当函数调用结束,其变量就变得没有价值。所以计算机会自动执行清理操作,把局部变量占用的内存空间及时回收,所以导致,在全局作用域范围无法直接访问局部变量!

global关键字

在局部作用域中我们可以访问全局变量,但是不能实现对全局变量的修改和删除操作,如果需要在局部变量中实现对全局变量的删除与修改操作可以使用global关键词声明全局变量。

global关键词:声明全局变量,可以实现在局部作用域实现对全局变量的修改

基本语法:

global 声明变量名
  • 表示从当前行开始,以后使用的同名变量都是全局变量
# 定义一个全局变量
num = 10


def func():
    # 在局部作用域中尝试修改全局变量
    num = 100

func()
print(num)  # 输出num = 10 并没有修改成功
  • 在上述代码中,通过num = 10相当于在函数内部定义了一个同名的局部变量,所以num = 10num = 100虽然同名了,但是两者一个是全局变量,一个是局部变量,两者相互隔离,不会产生任何影响。
# 定义一个全局变量
num = 10


def func():
    # 在局部作用域中尝试修改全局变量
    global num  #  声明全局变量
    num = 100

func()
print(num)  # 输出num = 100 修改成功
  • global关键字只是针对不可变数据类型的变量进行修改操作(数值、字符串、布尔类型和元组类型),可变类型不用使用global关键字。