0

这是我的程序的开始。我希望很多函数都在 for 循环中,如这里的第三个函数所示。我该怎么做?

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

4

2 回答 2

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 中,您通常只需使用模块内的函数即可。

于 2013-06-20T15:43:17.543 回答
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")

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

于 2013-06-20T15:39:50.983 回答