如何解决已定义函数与另一函数中参数之间的名称冲突?

时间:2012-02-11 06:34:59

标签: python

我很难找到解决名称冲突的最佳方法。以下是我面前的要点:

def clean():
    # do some cleaning stuff

def build(clean=True):
    if clean:
        clean()

糟糕。

由于一些原因,我不想在这里更改API。解决这场冲突的最佳策略是什么?现在,我正在做:

def clean():
    # do some cleaning stuff
clean_alias = clean

def build(clean=True):
    if clean:
        clean_alias()

除了重命名之外,这可能是最好/唯一的解决方案。我只是想知道是否有一种不同的方式来引用函数体内外部范围内的clean

2 个答案:

答案 0 :(得分:2)

尝试:

globals()['clean']()
  

全局()

     

返回表示当前全局符号的字典   表。这始终是当前模块的字典(在   函数或方法,这是定义它的模块,而不是   它被称为的模块。

答案 1 :(得分:1)

尝试添加一个默认参数,将全局clean函数绑定到局部变量。

def build(clean=True, cleanFn=clean): 
    if clean: 
        cleanFn()