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

Python中函数名与局部参数重名时如何调用外部同名函数

方案1:通过globals()直接获取全局函数

你可以直接通过Python内置的globals()方法读取模块全局命名空间里的normalize函数,完全避开和局部参数的命名冲突,代码改动最小:

def normalize(x):
    return x * 100

def double(n, normalize = True):
    n = n * 2
    if normalize:
        # 直接从全局符号表取外层的normalize函数
        n = globals()['normalize'](n)
    return n

方案2:通过默认参数提前绑定外层函数

你也可以利用Python函数默认参数在定义阶段求值的特性,提前把外层的normalize函数绑定到一个私有参数上,不需要访问全局符号表:

def normalize(x):
    return x * 100

# 下划线开头的参数属于约定的私有参数,外部调用时不需要传入
def double(n, normalize = True, _normalize = normalize):
    n = n * 2
    if normalize:
        n = _normalize(n)
    return n

两种方案都不需要修改原有函数、参数的命名,也不需要额外定义全局的函数副本,比你当前的实现更简洁。如果你的代码后续不会做模块结构的大改动,方案1的写法更直观,改动量最小。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:48:03