我很难找到解决名称冲突的最佳方法。以下是我面前的要点:
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
?
答案 0 :(得分:2)
尝试:
globals()['clean']()
全局()
返回表示当前全局符号的字典 表。这始终是当前模块的字典(在 函数或方法,这是定义它的模块,而不是 它被称为的模块。
答案 1 :(得分:1)
尝试添加一个默认参数,将全局clean
函数绑定到局部变量。
def build(clean=True, cleanFn=clean):
if clean:
cleanFn()