2013-06-20 49 views
0

这是我的程序的开始。我想在第三个函数中看到很多函数在for循环中。我如何去做这件事?在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 

难道只是一个缩进一切都在其他for循环的问题,还是它当函数被称为环路必须定义?

如何作为程序的一部分调用多个函数?我是python的新手,我不太清楚。

+0

这里有两个不同的问题。 – RyPeck

+0

当你说“过程”时,你几乎肯定意味着不同的东西。你想用这个文件做什么? – aestrivex

回答

2

这里没有计划。班级本身不做任何事情。你需要实例化这个类,然后调用它的一个方法(这正是你称之为“过程”的正确术语)。所以,在这个文件的末尾,你可以这样做:

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

内的一个方法,你可以调用另一个:所以对你的循环,你会怎么做:

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

还有一些其他的问题与您的代码。例如,在__init__方法中,您定义了一个局部变量,但从不执行任何操作,因此它不存储在任何地方。你需要存储在self变量,让他们成为实例属性:

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

而且,你似乎感到困惑时,将参数传递给函数。两次(在__init__process_file)您接受一个参数,然后用局部变量在方法内覆盖它。如果您在函数中定义了变量,则不应将其作为参数传递。

需要注意的是,因为我有机会面前说,Python是不是Java,并不总是需要的类。在这种情况下,除了作为方法的持有者之外,该课程对该课程没有任何贡献。在Python中,通常你只需要在模块内部使用函数。

0

过程不是适用的术语。这些更好地称为函数方法。就Python循环而言,缩进非常重要。你确实需要缩进。

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

你应该让功能,从内循环调用。上面的示例代码可能不是您代码的确切解决方案,但它应该足以回答您的问题。