2017-06-15 71 views
1

我有兩個Python文件,這是classification_model.pyresult.py。有一個在classification_model.py文件傳遞變量的函數內到另一個Python文件

def learningbased(): 
    ann_accuracy = (metrics.accuracy_score(expected, predicted)) 

功能我想這個ann_accuracy變量爲result.py file.I使用

from classification_model import * 
from classification_model import learningbased 

但它不工作。誰能告訴我我該怎麼做。

+1

其無法訪問此方式。要麼使它成爲一個類,並添加'ann_accuracy'作爲類變量,或者乾脆讓本作的功能 –

回答

1

好辦法: 您可以在函數返回ann_accuracy的價值和調用函數中result.py來獲取值。

#classification_model.py: 
def learningbased(): 
    ann_accuracy = (metrics.accuracy_score(expected, predicted)) 
    return ann_accuracy 

#result.py 
from classification_model import * 
ann_accuracy = learningbased() 

交替方式(使用時絕望,沒有其他的解決方案): 聲明ann_accuracy如classification_model.py全局變量。這樣,當你做from classification_model import *並調用函數時,你會得到result.py中的全局變量

+1

返回值,請不要這樣認爲這種可怕的東西用全球性的,特別是對人誰顯然還不能明白爲什麼這絕對不是一個好主意。 –

+0

即使重寫它仍然是錯誤的 - 總是有另一個(更好的)解決方案。哦,是的,當我們在這裏時:一起使用全球和明星導入將不起作用(自己嘗試......)。 –

+2

我正如你所說的那樣從函數返回ann_accuracy並將其放入result.py文件中。現在它的工作。謝謝 –

-2

將ann_accuracy聲明爲在classification_model.py中的全局變量。使用from classification_model import *,可以使用/訪問result.py中的全局變量。

+0

最糟糕的解決方案,如果我可以downvote這個答案999倍,我很樂意做。不要使用全球。 –

1

我想你應該作爲一個整體,通過添加__init__.py文件中聲明你的項目:

project_folder 
    |_ __init__.py 
    |_ classification_model.py 
    |_ result.py 

這樣做後,在result.py你可以這樣做:

from . import classification_model 
classification_model.learning_based() 

這是從一點點不同已經建議了什麼,它使您能夠清晰地組織您的項目。

相關問題