2013-06-20 3 views
0

Voici le début de mon programme. Je veux que beaucoup de fonctions soient à l'intérieur de la boucle for comme vu dans la 3ème fonction ici. Comment je vais à ce sujet?Exécuter plusieurs fonctions dans une boucle for python

#!/usr/bin/env python 

from rdflib import URIRef, Graph 
from StringIO import StringIO 
import subprocess as sub 

class Wordnet(): 

    def __init__(self, graph): 
     graph = Graph() 

    def process_file(self, file): 
     file = open("new_2.txt", "r") 
     return file 

    def line_for_loop(self, file): 
     for line in file: 

    def split_pointer_part(self, before_at, after_at, line): 
     before_at, after_at = line.split('@', 1) 
     return before_at, after_at  

    def split_word_part(self, word_part, line): 
     word_part = line.split() 
     return word_part 

Est-ce juste une question de indenter tout le reste dans la boucle ou est-il lorsque la fonction est appelée que la boucle doit être définie?

Comment faire pour appeler plusieurs fonctions dans le cadre d'un programme? Je suis nouveau à python et je ne sais pas vraiment.

+0

Vous avez deux questions différentes ici. – RyPeck

+0

Quand vous dites "processus", vous entendez certainement quelque chose de différent. Qu'essayez-vous de faire avec ce fichier? – aestrivex

Répondre

2

Il n'y a pas de programme ici. Les classes en elles-mêmes ne font rien. Vous devez instancier la classe, puis appeler une de ses méthodes (ce qui est le bon terme pour ce que vous appelez "processus"). Ainsi, à la fin de ce fichier, vous pouvez le faire:

wordnet = Wordnet() 
my_file = wordnet.process_file() 
wordnet.line_for_loop(my_file) 

A l'intérieur d'une méthode, vous pouvez appeler un autre: si votre boucle, vous feriez:

def line_for_loop(self, file): 
    for line in file: 
     self.my_method_1() 
     self.my_method_2() 

Il y a quelques autres questions avec votre code. Par exemple, dans la méthode __init__, vous définissez une variable locale , mais ne faites jamais rien avec elle, elle n'est donc pas stockée nulle part. Vous devez stocker des variables sur self pour qu'ils deviennent des propriétés d'exemple:

def __init__(self): 
    self.graph = Graph() 

, vous semblez aussi être confus quand pour passer des paramètres à des fonctions. Deux fois (dans __init__ et process_file), vous acceptez un paramètre, puis l'écrasez dans la méthode avec une variable locale. Si vous définissez la variable dans la fonction, vous ne devez pas la passer en paramètre. Notez que, comme j'ai déjà eu l'occasion de le dire, Python n'est pas Java et ne nécessite pas toujours de classes. Dans ce cas, la classe ne contribue rien au programme, sauf en tant que détenteur de méthodes. En Python, vous utiliseriez normalement des fonctions à l'intérieur d'un module pour cela.

0

Ce terme n'est pas approprié. Ceux-ci sont mieux connus comme les fonctions ou les méthodes. En ce qui concerne les boucles Python, indentation est important. Vous devez indenter.

def line_for_loop(self, file): 
    for line in file: 
     process_file("example_file_name.txt") 
     split_pointer_part(0, 10, "some test string") 

Vous devez faire des appels de fonction à l'intérieur de la boucle. L'exemple de code ci-dessus n'est peut-être pas la solution exacte pour votre code, mais il devrait suffire à répondre à votre question.

Questions connexes