【Python】函数 ⑥ ( 变量作用域 | 局部变量 | 全局变量 | global 关键字 | 代码示例 )





一、变量作用域



Python 变量 作用域变量的 使用范围 , 变量 在哪些 代码区域中可以被访问 , 在哪些代码块中不能被访问 ;


变量主要分为两类 :

  • 局部变量
  • 全局变量

1、局部变量


局部变量 指的是 定义在 函数中的变量 , 只在 函数 内部可访问 , 函数 外部无法访问 函数中的局部变量 ;

局部变量的作用是 在 函数运行时 , 临时保存 临时变量 数据 , 函数运行结束 , 局部变量会被销毁 ;


错误代码示例 : 在该代码中的 add 函数中定义了局部变量 sum_num , 该 局部变量 只能在函数内部访问 , 如果在函数外部访问时 , 编译时会报错 Unresolved reference 'sum_num' , 运行时会报错 NameError: name 'sum_num' is not defined ;

"""
局部变量 代码示例
"""

# 定义函数 以及 局部变量
def add(a, b):
    # sum_num 是局部变量, 只能在函数内部访问
    sum_num = a + b
    print(sum_num)

# 调用函数
add(1, 2) # 输出: 3

# 尝试调用 函数内部的 局部变量
print(sum_num) # 报错: NameError: name 'sum_num' is not defined

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
3
Traceback (most recent call last):
  File "Y:\002_WorkSpace\PycharmProjects\HelloPython\hello.py", line 12, in <module>
    print(sum_num)
NameError: name 'sum_num' is not defined

Process finished with exit code 1

报错 :

NameError: name 'sum_num' is not defined

在这里插入图片描述


2、全局变量


全局变量 是 在 函数体 外部 定义的变量 , 该变量 可以在 函数体 内部 和 外部 同时生效 ;

在 函数体 外部 使用全局变量 , 直接使用即可 ;

全局变量 可以在 函数体内部访问 , 只能读取 , 不能修改 ;

如果 要在 函数体 内部使用全局变量 , 如果要修改 全局变量的值 , 需要使用 global 关键字提前声明 , 否则就会将变量当做新定义的内部变量 ;


3、代码示例 - 函数体内修改全局变量失败


在下面的代码中 , 定义了全局变量 sum_num ,

如果要在 add 函数中 , 读取该全局变量 , 可以直接读取 ;

但是如果要修改改全局变量 , 直接使用 sum_num = a + b 代码 重新为 全局变量赋值 , 该操作相当于在 函数中 重新定义了一个新的局部变量 , 在函数执行完毕后 就会销毁 , 该 局部变量 sum_num 与 全局变量 sum_num 没有任何关系 ;

因此 , 最后打印出来的 全局变量 sum_num 值仍为 0 ;

代码示例 :

"""
全局变量 代码示例
"""

# 定义全局变量
sum_num = 0

# 定义函数 以及 尝试使用全局变量
def add(a, b):
    # 此处的 sum_num 是局部变量
    sum_num = a + b
    # 输出局部变量
    print(sum_num)

# 调用函数
add(1, 2) # 输出: 3

# 尝试调用 函数内部的 局部变量
print(sum_num) # 输出: 0

执行结果 :

3
0

在这里插入图片描述


4、代码示例 - 函数体内修改全局变量


在下面的代码中 , 如果要修改改全局变量 , 不能直接使用 sum_num = a + b 代码 , 需要先使用 global sum_num 代码 , 声明一下下面将要使用全局变量 sum_num , 此时编译器就会将该变量当做全局变量进行处理 ;

最后打印出来的 全局变量 sum_num 值 为 3 ;


代码示例 :

"""
全局变量 代码示例
"""

# 定义全局变量
sum_num = 0

# 定义函数 以及 尝试使用全局变量
def add(a, b):
    # 此处的 sum_num 是全局变量
    global sum_num
    sum_num = a + b
    # 输出全局遍变量
    print(sum_num)

# 调用函数
add(1, 2) # 输出: 3

# 输出全局变量
print(sum_num) # 输出: 3

执行结果 :

3
3

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/131015624