You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数初始化变量异常:为何预期的全局变量未被正确赋值?

问题原因

在__init_abc函数中直接赋值a="a"、b="b"、c="c"时,Python会将这些变量视为局部变量,而非你定义的全局变量。函数执行结束后局部变量被销毁,全局的a、b、c根本没被修改,所以打印结果还是None None None。

解决方案

方案1:使用global关键字声明全局变量

在函数内部明确告诉Python,要操作的是全局作用域中的变量:

a,b,c = [None]*3

def __init_abc():
    global a, b, c  # 声明要操作全局变量
    a="a"
    b="b"
    c="c"
    
def print_abc():
    __init_abc()
    print(a,b,c)
    
print_abc()

执行后输出:a b c

方案2:通过函数返回值修改全局变量

如果不想使用global,可以让函数返回初始化后的变量值,再赋值给全局变量:

a,b,c = [None]*3

def __init_abc():
    return "a", "b", "c"
    
def print_abc():
    global a, b, c  # 声明要修改全局变量
    a, b, c = __init_abc()
    print(a,b,c)
    
print_abc()

或者直接在全局作用域完成赋值:

a,b,c = [None]*3

def __init_abc():
    return "a", "b", "c"
    
a, b, c = __init_abc()
print(a,b,c)

内容的提问来源于stack exchange,提问作者Alexander Dvorin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:22:02