在for循环python中运行多个函数

时间:2013-06-20 15:33:31

标签: python loops

这是我的计划的开始。我希望很多函数都在for循环中,如第3函数所示。我该怎么做?

#!/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的新手,我真的不知道。

2 个答案:

答案 0 :(得分: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__方法中,您定义了一个graph局部变量,但从不对其执行任何操作,因此它不会存储在任何位置。您需要在self上存储变量,以使它们成为实例属性:

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

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

请注意,正如我之前曾经说过的那样,Python不是Java,并不总是需要类。在这种情况下,除了作为方法的持有者之外,该类对程序没有任何贡献。在Python中,通常只需使用模块内部的函数。

答案 1 :(得分: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")

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