如何在 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 模块?的主要内容,如果未能解决你的问题,请参考以下文章

Python 如何从 .egg 文件中导入模块?

如何在 boost::python 嵌入式 python 代码中导入模块?

python如何删除已在shell中导入的模块?

Python:如何禁止从模块中导入类?

如何在 C++ 程序将使用的 Python 脚本中导入 cpython 模块?

如何使用 importlib.import_module 在 Python 中导入模块