Явный доступ к Python, встроенный в область

Как вы явно обращаетесь к имени в Python, встроенном в область видимости?

Одна из ситуаций, когда я столкнулся с этим, - это модуль, называемый foo, который имел открытую функцию. В другом модуле функция foo open будет доступна как foo.open, которая работает хорошо. В самом foo, open блокирует встроенный open. Как вы можете получить доступ к встроенной версии имени, как открытое явно?

Я знаю, что, вероятно, практически плохая идея заблокировать любое встроенное имя, но мне все же интересно узнать, есть ли способ явно получить доступ к встроенной области.

Ответ 1

Используйте __builtin__.

def open():
    pass

import __builtin__

print open
print __builtin__.open

... дает вам...

<function open at 0x011E8670>
<built-in function open>

Ответ 2

Это что-то вроде

__builtins__.open()