如何在 lambda 中导入 python 模块?
Posted
技术标签:
【中文标题】如何在 lambda 中导入 python 模块?【英文标题】:How to import a python module inside lambda? 【发布时间】:2020-06-08 07:18:19 【问题描述】:假设根据我想导入一些类的变量,创建它的对象并返回它。 例如:
if x=='SomeThing':
import something
object = something's object
else:
import nothing
object = nothing's object
object.function()
我想使用 lambda 执行上述操作,我该怎么做?
【问题讨论】:
您不能在 lambda 表达式中使用import
语句。
为什么要使用lambda
?只需使用标准函数 def
我想减少代码的大小,这是使用 lambda 的唯一原因
这是使用 lambda 的最糟糕的原因。
不,当您不需要为正在创建的函数命名时使用 lambda 表达式。 “代码的大小”与它无关。
【参考方案1】:
你可以使用魔法__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()
【讨论】:
以上是关于如何在 lambda 中导入 python 模块?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 boost::python 嵌入式 python 代码中导入模块?