Как использовать импорт только для одной функции?

#python #import

#python #импорт

Вопрос:

Как я могу import вставить модуль Python , но только в одну функцию?

Мое воображение:

 def func():
    localize from myModule import helperFunc # localize means "to this scope only: "
    helperFunc("do something magical")       # but it doesn't exist

try:
    helperFunc("do something magical")
except NameError:
    print("'helperFunc' doesn't exist at this scope") # this would get run
  

Проблема здесь в том, что localize этого не существует. Есть ли что-нибудь Python для имитации этого?

Комментарии:

1. Импорт внутри определения функции уже является локальным для этой функции.

2. Имена, созданные в функции, по умолчанию являются локальными. Это включает импорт.

Ответ №1:

Вы можете просто импортировать модули обычным способом:

 def choose5(lst):
    from random import choices
    # choices is imported here
    return choices(lst, k=5)

print(choose5([1, 2, 3]))
# choices is not imported here
  

Ответ №2:

 def my_now():
    from datetime import datetime
    return datetime.now()

try:
    print("Success", datetime.now())
except NameError:
    print("NameError occurred", my_now())
  

Выполнение приведенного выше кода даст вам результат

 NameError occurred 2020-11-06 21:20:19.930863
  

datetime был ограничен my_now функцией. Попытка datetime.now() прямого вызова завершилась неудачей, поэтому функция my_now была вызвана, и ее удалось успешно вызвать datetime.now() .