面试题答案
一键面试局部变量和全局变量的作用域规则
- 局部变量:
- 作用域是定义它的函数内部。在函数内创建的变量,仅在该函数的执行期间存在且可访问。函数执行结束后,局部变量所占用的内存通常会被释放。
- 例如:
def my_function():
local_var = 10
print(local_var)
my_function()
# print(local_var) # 这会报错,因为local_var在函数外部不可访问
- 全局变量:
- 作用域是整个模块(文件)。在模块的顶层定义的变量,在模块内的任何函数外部和内部(在遵循一定规则下)都可访问。
- 例如:
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)
变量生命周期与作用域的关系
- 作用域决定可见性:作用域规定了变量在程序中的哪些部分可以被访问。例如局部变量只能在定义它的函数内部访问,而全局变量在整个模块内(遵循规则)都可访问。
- 生命周期决定存在时间:变量的生命周期指的是变量从创建到被销毁的时间段。局部变量的生命周期从函数开始执行创建,到函数执行结束销毁。全局变量的生命周期通常从模块被加载时创建,到整个程序结束时销毁。
- 关系总结:作用域和生命周期紧密相关。一般来说,作用域限定了变量在程序中有效的区域,而生命周期决定了变量在这个作用域内存在的时间长度。比如局部变量,其作用域在函数内,生命周期也与函数的执行周期相关,函数执行完,局部变量在作用域内不再有效(通常被销毁,生命周期结束);全局变量作用域是整个模块,其生命周期从模块加载到程序结束,在整个作用域内都有效(只要遵循访问规则)。