Как разрешить конфликт имен между определенной функцией и параметром в другой функции?

Мне сложно найти лучший способ разрешить конфликт имен. Вот суть того, что у меня передо мной:

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 , находящуюся во внешнем пространстве, внутри тела функции?

Пытаться:

 globals()['clean']() 

глобалы ()

Возвращает словарь, представляющий текущую глобальную таблицу символов. Это всегда словарь текущего модуля (внутри функции или метода, это модуль, где он определен, а не модуль, из которого он вызывается).

Попробуйте добавить аргумент по умолчанию, который связывает глобальную функцию clean с локальной переменной.

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