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

Python函数参数为None时如何调用同名全局变量并解决语法错误

错误原因

Python 语法明确规定:同一个变量名不能在同一函数作用域内同时作为参数和global全局变量声明。即使global声明写在条件分支里,解释器在解析函数定义阶段就会检测到命名冲突,直接抛出SyntaxError: name 'ggg' is parameter and global语法错误,和分支是否实际运行无关。

实现方案

不需要在函数内添加global声明,直接调用Python内置的globals()函数获取全局命名空间中的同名变量即可,该方法不会和当前函数的参数名产生冲突。

正确实现代码如下:

# 全局变量定义
ggg = 1

def AAA(ggg=None):
    # 参数为None时读取全局变量值,否则使用传入的参数值
    if ggg is None:
        ggg = globals()['ggg']
    print(ggg)

AAA(None) # 输出1,符合预期
AAA(2)    # 输出2,符合预期

补充说明

判断参数是否为None时建议使用is None而非not ggg,后者会把0、空字符串、空列表等布尔值为False的合法传入值误判为需要读取全局变量的场景,不符合业务预期。

内容的提问来源于stack exchange,提问作者Luk Aron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 06:09:03