2016-11-27 29 views
0

我一直在寻找如何做到这一点,但我找不到是否有解决方案。我以为__import__?但我仍然无法弄清楚。 例如:返回时在函数中导入模块

>>> def combs(s = []): 
...  from itertools import combinations 
...  return [list(combinations(s, 2))] 
... 
>>> lst = ["A","B",'C'] 
>>> print(combs(lst)) 
[[('A', 'B'), ('A', 'C'), ('B', 'C')]] 
>>> 

我很好奇,如果这样的事情可以做?

def combs(s = []): 
    return [list(combinations(s, 2))]__import__(itertools, list) 
+1

我不明白你的问题。应该做什么“这个”?你为什么要导入返回的东西? –

+0

@AndrasDeak只是好奇,如果有办法做到这一点,我所说的“this”是代码'__import __(itertools,list)'。如果有可能在返回时实现类似的东西。 –

+2

为什么这会与正确导入它有所不同,并返回?除了不太可读。 –

回答

1

这里是如何实现在你的榜样动态导入:

def combs(s = []): 
    return list(__import__('itertools').combinations(s, 2)) 

NB:Python文档的__import__状态:

这是一种先进的功能,是不是在日常Python编程中需要

许多Pythonistas会喜欢明确的导入(如你的原始示例),并且可能会考虑过度使用__import__是一种代码味道。

+0

我明白了,我不会使用它,我想知道是否有可能实现这样的目标。谢谢。 –