MST

星途 面试题库

面试题:Python变量作用域与生命周期基础应用

请描述Python中局部变量和全局变量的作用域规则,并举例说明在函数内部如何修改全局变量。同时,解释一下变量生命周期与作用域的关系。
17.3万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

局部变量和全局变量的作用域规则

  1. 局部变量
    • 作用域是定义它的函数内部。在函数内创建的变量,仅在该函数的执行期间存在且可访问。函数执行结束后,局部变量所占用的内存通常会被释放。
    • 例如:
def my_function():
    local_var = 10
    print(local_var)


my_function()
# print(local_var)  # 这会报错,因为local_var在函数外部不可访问
  1. 全局变量
    • 作用域是整个模块(文件)。在模块的顶层定义的变量,在模块内的任何函数外部和内部(在遵循一定规则下)都可访问。
    • 例如:
global_var = 20


def another_function():
    print(global_var)


another_function()
print(global_var)

在函数内部修改全局变量

在函数内部修改全局变量,需要使用 global 关键字声明。 例如:

global_num = 5


def change_global():
    global global_num
    global_num = global_num + 1
    print(global_num)


change_global()
print(global_num)

变量生命周期与作用域的关系

  1. 作用域决定可见性:作用域规定了变量在程序中的哪些部分可以被访问。例如局部变量只能在定义它的函数内部访问,而全局变量在整个模块内(遵循规则)都可访问。
  2. 生命周期决定存在时间:变量的生命周期指的是变量从创建到被销毁的时间段。局部变量的生命周期从函数开始执行创建,到函数执行结束销毁。全局变量的生命周期通常从模块被加载时创建,到整个程序结束时销毁。
  3. 关系总结:作用域和生命周期紧密相关。一般来说,作用域限定了变量在程序中有效的区域,而生命周期决定了变量在这个作用域内存在的时间长度。比如局部变量,其作用域在函数内,生命周期也与函数的执行周期相关,函数执行完,局部变量在作用域内不再有效(通常被销毁,生命周期结束);全局变量作用域是整个模块,其生命周期从模块加载到程序结束,在整个作用域内都有效(只要遵循访问规则)。