На самом деле есть способ импортировать * на уровне функции [закрыто]Python

Программы на Python
Ответить
Anonymous
 На самом деле есть способ импортировать * на уровне функции [закрыто]

Сообщение Anonymous »

Этот вопрос — скорее способ поделиться чем-то с читателями. Выполнение импорта * внутри функции не разрешено в Python и, как правило, является плохой практикой. Однако бывают случаи, когда вам действительно нужно это сделать, чтобы облегчить себе жизнь и не столкнуться со следующей ошибкой:

Код: Выделить всё

SyntaxError: import * only allowed at module level
Пример варианта использования (точнее, мой вариант использования) — создание обобщенного конвейера MLOps с компонентом kubeflow, который в идеале будет запускать только функцию .predict различных объектов ML — из scikit Learn
, xgboost и даже что-то родное для облака. Чтобы добавить еще одно предостережение к этому варианту использования, я загружаю файл Pickle объекта ML. Перечисление каждого пакета будет утомительным и болезненным. Следовательно, в этой ситуации мне действительно нужна функциональность import * для работы в моей функции.
И, возможно, вы сталкивались с подобными ситуациями.
Ну, вот решение этой проблемы для всех вас:

Код: Выделить всё

def foo():
import
globals.update(vars())

Еще раз повторяю, что это не идеально; однако бывают случаи, когда вам нужно сделать это, как в моем примере выше.


Подробнее здесь: https://stackoverflow.com/questions/792 ... tion-level
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»