如何在Lambda内部导入Python模块?

3

假设根据变量的不同,我想要导入一些类,创建它们的对象并返回。 例如:

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

我要使用lambda来完成上述操作,如何实现?

4
在lambda表达式中不能使用import语句。 - Tal
我想要减小代码的大小,这是使用lambda的唯一原因。 - sarath madala
9
那是使用lambda表达式最糟糕的想法。 - FiddleStix
仍然减小代码大小是lambda的使用之一,我希望在不同层面上实现这一点。 - sarath madala
5
不,当您不需要为创建的函数命名时,使用Lambda表达式。这与“代码大小”无关。 - chepner
2个回答

7
你可以使用魔法函数__import__
importer = lambda x: (__import__("pandas").DataFrame if x == 0 
                      else __import__('numpy').arange)

注意:这是非常丑陋的,除非你绝对需要这样做,否则不建议使用。


2

通常情况下,无条件导入两个模块并稍后选择实际使用的模块是很少出现问题的。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接