Если вы импортируете os в глобальной области видимости, вы создаете глобальную переменную с именем os
. Если вы импортируете os в локальной области, вы создаете локальную переменную с именем os
. И если вы попытаетесь использовать локальную переменную в функции до ее создания, вы получите эту ошибку. Так же, как если бы вы явно присваивали переменную.
Те же решения применимы, если вы хотите, чтобы импорт внутри функции создавал глобальную переменную, вы можете использовать ключевое слово global
:
def main():
global os
print(os.path.isfile('/bin/cat'))
import os
Или вы можете изменить свой локальный импорт, чтобы использовать другое имя переменной, чтобы использование os
было однозначным.
def main():
print(os.path.isfile('/bin/cat'))
import os as _os
Хотя, очевидно, это всего лишь пример для демонстрации, и нет никаких причинв этом случае необходимо повторно импортировать os
в вашу функцию, когда вы уже импортировали ее глобально.