【问题标题】:How to import a python module inside lambda?如何在 lambda 中导入 python 模块?
【发布时间】: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 表达式。 “代码的大小”与它无关。

标签: python python-3.x function lambda python-import


【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 2019-02-23
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2019-08-31
      • 2020-04-22
      • 2018-01-07
      • 2016-07-08
      相关资源
      最近更新 更多