2016-09-26 12 views
1

私はPythonを初めて使い、このコードに入りました。私の以前のプログラミング知識から、私はこのメソッドが何かを返すと仮定しています(results)。しかし、なぜself.children[0].query(rect, results)のような文は、そのメソッドを再帰的に呼び出す間に戻り値を任意の変数に代入しないのですか?Pythonで戻り値を持つメソッドを呼び出す

def query(self, rect, results=None): 

    if results is None: 
     rect = normalize_rect(rect) 
     results = set() 

    if len(self.children) > 0: 
     if rect[0] <= self.center[0]: 
      if rect[1] <= self.center[1]: 
       self.children[0].query(rect, results) 
      if rect[3] > self.center[1]: 
       self.children[1].query(rect, results) 
     if rect[2] > self.center[0]: 
      if rect[1] <= self.center[1]: 
       self.children[2].query(rect, results) 
      if rect[3] > self.center[1]: 
       self.children[3].query(rect, results) 

    for node in self.nodes: 
     if (node.rect[2] > rect[0] and node.rect[0] <= rect[2] and 
       node.rect[3] > rect[1] and node.rect[1] <= rect[3]): 
      results.add(node.item) 

    return results 

答えて

2

あなたはquery機能がresultsを返さないことを正しいですが、それはまたは、この行にresultsを変更:

この中で使用されるパラメータは、時々「出力として記述された
results.add(node.item) 

パラメータ "となる。

queryは純粋な関数ではありません。戻り値を使用せずにqueryが呼び出された場所では、副作用のためにqueryが呼び出されています。

関連する問題