2017-06-15 33 views
1

私はclassification_model.pyresult.pyという2つのpythonファイルを持っています。 result.py file.Iが 関数内の変数を別のPythonファイルに渡す

from classification_model import * 
from classification_model import learningbased 

を使用しかし、それは動作しませんに、私はこの ann_accuracy変数を取得したい

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

としてclassification_model.pyファイル内の関数があります。どのように私はこれを行うことができます誰も教えてくれますか?

+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() 

代替方法(使用する場合絶望、他の溶液):classification_model.pyにおけるグローバル変数として 宣言ann_accuracy。そのようにして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のグローバル変数にアクセス/アクセスできます。 result.pyにあなたが行うことができ、それをやった後

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

from . import classification_model 
classification_model.learning_based() 

それは少し異なるのです

+0

これまで最悪の解決策、私はこの答えをdownvoteできる場合999回私は喜んで行うだろう。グローバルを使用しないでください。 –

1

は、私はあなたがパッケージとして、__init__.pyファイルを追加することで、プロジェクトを宣言するべきだと思います既に提案されていたことは、プロジェクトの明確な組織を持つことができます。

関連する問題