2016-11-27 24 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

我明白了,我不會使用它,我想知道是否有可能實現這樣的目標。謝謝。 –