2013-06-20 82 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") 

你應該讓功能,從內循環調用。上面的示例代碼可能不是您代碼的確切解決方案,但它應該足以回答您的問題。