#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()
.