这是我的计划的开始。我希望很多函数都在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的新手,我真的不知道。
答案 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")
您应该从循环内部进行函数调用。上面的示例代码可能不是您代码的确切解决方案,但它应足以回答您的问题。