传递变量的函数内到另一个Python文件

传递变量的函数内到另一个Python文件

问题描述:

我有两个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'作为类变量,或者干脆让本作的功能 –

好办法: 您可以在函数返回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文件中。现在它的工作。谢谢 –

将ann_accuracy声明为在classification_model.py中的全局变量。使用from classification_model import *,可以使用/访问result.py中的全局变量。

+0

最糟糕的解决方案,如果我可以downvote这个答案999倍,我很乐意做。不要使用全球。 –

我想你应该作为一个整体,通过添加__init__.py文件中声明你的项目:

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

这样做后,在result.py你可以这样做:

from . import classification_model 
classification_model.learning_based() 

这是从一点点不同已经建议了什么,它使您能够清晰地组织您的项目。