2013-06-16 8 views
0

팩터 그래프를 구현하려고합니다. 필자는 적절한 파일에서 요인 기능을 읽으 려합니다. 난 그냥 테스트 파일에서 함수를 읽을 때 불행하게도 나는 오류를 얻을 : 기능파일에서 함수를 읽는 방법? [베이지안 네트워크에서 팩터 그래프 용]

class Node: 
    def __init__(self,name,graph): 
     self.name = name 
     self.graph = graph 
     self.neighbourFactors=[]; 
class Factor: 
    def __init__(self,name,neighbours,graph): 
     self.name = name 
     self.value = 1 
     self.graph = graph 
     self.neighbourNodes=[]; 
class Graph: 
    def __init__(self,factorNumber,nodeNumber,factorNeighboursList): 
    self.factorNumber = factorNumber 
    self.factors=[Factor(i,factorNeighboursList[i],self) for i in range(factorNumber)] 
    self.nodes=[Node(i,self) for i in range(nodeNumber)] 
    factorNumber=0; 
    for neighbourNodes in factorNeighboursList: 
     for i in range(len(neighbourNodes)):  
      self.factors[factorNumber].neighbourNodes.append(self.nodes[int(neighbourNodes[i])]); 
      self.nodes[int(neighbourNodes[i])].neighbourFactors.append(self.factors[factorNumber]) 
     factorNumber+=1; 
def makeGraph(factorNumber,nodeNumber): 
    factorNeighboursList=[]*factorNumber 
    f = open('factorNeighboursInput.txt', 'r')   
    for line in f: 
     factorNeighboursList.append(line.split()) 
    g=Graph(factorNumber,nodeNumber,factorNeighboursList) 
    return g 
factorNumber=input('Please specify number of Factors:') 
nodeNumber=input('Please specify number of Nodes:') 
g=makeGraph(factorNumber,nodeNumber) 
f = open('factorFunctionInput.txt', 'r')   
lines=f.read().split(';') 
print lines 
eval(lines[0])(1,2,3) 

내 별도의 입력 파일은 다음과 같습니다 :

def f(x0,x1,x2): 
    return x0*x1*x2 
; 
def f(x1): 
    return x1+1 
; 
def f(x2): 
    return x2 
; 
def f(x3): 
    return x3+2 
; 
다음과 같이

eval(lines[0])(1,2,3) 
    File "<string>", line 1 
    def f(x0,x1,x2): 
    ^
SyntaxError: invalid syntax 

내 코드입니다

+0

가능한 중복 [저장 함수를 호출하는 방법 파이썬 프로그램의 다른 파일에?] (http://stackoverflow.com/questions/7644657/how-to-call-a-function-stored-in-another-file-from-a-python-program) –

답변

1

여러 줄의 eval 함수를 사용하여 eval을 호출하면 오류가 발생한다고 생각합니다. 당신은 평가 대신 eg.exec 사용해야합니다 solution

는 또한 내가 당신을 생각하는 한 함수를 호출, 정의는 충분하지 않은 것 같다 않습니다의

def f(x0,x1,x2): 
     return x0*x1*x2 

    f(x0,x1,x2) 
+0

예 . 이미 답변을 찾았습니다. http://stackoverflow.com/questions/7644657/how-to-call-a-function-stored-in-another-file-from-a-python-program – Cupitor