2012-05-09 9 views
5

関数/メソッドに "純粋な"注釈を付けるツールはありますか?そして、その関数/メソッドが副作用なしであるかどうかをテストするコードを分析しますか?Pythonの副作用を適用する

答えて

9

Pythonの世界では、オブジェクトは関数呼び出しで何が起こるかについて非常に多くの意見を持っているので、質問はあまり意味がありません。

たとえば、次の関数が純粋であるかどうかを確認するにはどうすればよいですか?

>>> class A(int): 
     def __add__(self, other): 
      global s 
      s += 1 
      return int.__add__(self, other) 

>>> def f(x): 
     return x + 1 

>>> s = 0 
>>> f(A(1)) 
2 
>>> s 
1 

機能Fは純粋に見えますが、Xの追加操作がをインクリメントの副作用があります。答えは何Xがあるに依存

def f(x): 
    return x + 1 

+0

あなたができることは、 'f'が**' type(x)== int'と仮定して純粋であるかどうかをチェックすることです。 Pythonは動的に型付けされるので、型の注釈を手動で追加する必要があります。 – Robin

関連する問題