2014-09-19 66 views
-5

我發現了同樣的問題,但我無法評論那裏的答案。 Python: Calling a function from a file that has current file importedPython:如何從主文件中調用導入文件中的函數?

我有one.py:

import two 

def one_bis() 
    print('something') 

def one(): 
    two.two() 

one() 

...和two.py:

def two(): 
    one_bis() 

烏爾裏希·埃克哈特拋出一些posibilities和這裏有兩種,我很感興趣(以粗體顯示):

  • 移動常用函數n到由其他模塊導入的模塊。
  • 將兩個模塊合併爲一個。
  • 將函數從main傳遞給需要調用它的代碼。
  • 猴子在導入它後將功能補入檢查模塊。
  • 重構整個事情,以便您沒有循環依賴。

我應該怎麼做這些解決方案?

+0

重構你的代碼,所以你不必這樣做。 – tacaswell 2014-09-19 13:38:02

回答

1

這不是對你的「我該怎麼做複雜的方式?」的答案。問題,但另一個選擇做這個。

# one.py 
import two 

def one_bis(): 
    print('something') 

def one(): 
    two.two() 

one() 

# two.py 
def two(): 
    from one import one_bis 
    one_bis() 

如果你真的想修補模塊two然後添加以下代碼到模塊one你打電話之前one()(這就要求two.two())。

two.two = one_bis 

但我建議重構你的應用程序。

+0

這不是一個「非建議」的循環依賴嗎? – 2014-09-19 13:51:27

+0

如果你正在談論我的第一個解決方案:是的(我不推薦它),但它是一個_working_循環依賴項。 – Matthias 2014-09-19 14:01:27

相關問題