You need to enable JavaScript to run this app. Python中函数内给全局变量赋值未生效问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python中函数内给全局变量赋值未生效问题咨询

问题核心原因

这是Python变量作用域的规则导致的,你的global关键字用法错误:

  • global的作用是在函数内部声明指定变量使用全局作用域的同名变量,你把global name写在全局作用域没有任何效果。
  • 你的test函数内的name = "Function"默认会被识别为创建一个仅属于test函数的局部变量,和全局作用域的name是完全独立的两个变量,函数执行结束后这个局部变量就会被销毁,全局变量name从头到尾都没有被修改,所以print输出还是Original。
正确修改方案

只需要把global声明移到函数内部即可:

name = "Original"

def test():
    # 函数内部声明后续操作的name是全局变量
    global name
    name = "Function"

test()
print(name)

修改后运行输出就是你预期的Function。

补充说明

Python的变量查找遵循LEGB规则,默认在函数内部对变量赋值时,不会自动关联全局同名变量,只会创建新的局部变量,如果要修改全局/外层嵌套作用域的变量,需要显式用global(修改全局变量)或者nonlocal(修改外层嵌套函数的变量)声明。

内容的提问来源于stack exchange,提问作者Rohan Pinto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 15:06:04