Как импортировать модуль python внутри лямбды? - PullRequest
2 голосов
/ 24 февраля 2020

Предположим, в зависимости от переменной я хочу импортировать некоторые классы, создать ее объект и вернуть его. например:

if x=='SomeThing':
  import something
  object = something's object
else:
  import nothing
  object = nothing's object
object.function()

Я хочу сделать выше, используя лямбду, как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 24 февраля 2020

Вы можете использовать волхвы c __import__:

importer = lambda x: (__import__("pandas").DataFrame if x == 0 
                      else __import__('numpy').arange)

ПРИМЕЧАНИЕ : это крайне уродливо и совсем не рекомендуется, если только вы абсолютно необходимо это сделать.

2 голосов
/ 24 февраля 2020

Редко возникает проблема простого импорта обоих модулей без каких-либо условий и выбора того, какой модуль на самом деле использовать позже.

import something
import nothing

(something if x == 'SomeThing' else nothing).object.function()

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

if x == 'SomeThing':
    import something as thingmodule
else:
    import nothing as thingmodule

thingmodule.object.function()
...