返回时在函数中导入模块

Importing module in a function when returning

我一直在寻找如何做到这一点,但我找不到是否有解决方案。我以为__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)

以下是如何在您的示例中实现动态导入:

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

注意:__import__ 的 python 文档声明:

This is an advanced function that is not needed in everyday Python programming

许多 Pythonista 更喜欢显式导入(如在您的原始示例中),并且可能会认为过度使用 __import__ 有点代码味道。