2012-05-09 24 views

Respuesta

9

En el mundo de Python, la pregunta no tiene mucho sentido ya que los objetos tienen mucho que decir en lo que sucede en una llamada a función.

Por ejemplo, ¿cómo podría saber si la siguiente función es pura?

def f(x): 
    return x + 1 

La respuesta depende de lo x es:

>>> 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 

Aunque la función f se ve pura, la operación de adición en x tiene el efecto secundario de incrementar s .

+0

Lo que * puedes * hacer es comprobar si 'f' es puro ** suponiendo **' tipo (x) == int'. Sin embargo, dado que Python está tipado dinámicamente, debería agregar anotaciones de tipo manualmente. – Robin

Cuestiones relacionadas