from typing import Any
from typing import Optional
from typing import Tuple


def is_iterable(obj: Any, exclude: Optional[Tuple[type, ...]] = None) -> bool:
    """
    Recieves an object and checks if it is iterable by
    looking for the __iter__ method on the object.
    If exclude is provided, is_iterable will evaluate
    to False is the object is instance of any of the types
    in exclude.
    >>> is_iterable([1,2,3,])
    True
    >>> is_iterable([1,2,3,], exclude=(list,))
    False
    >>> is_iterable(1)
    False
    """
    exclude = exclude if exclude is not None else ()
    if hasattr(obj, '__iter__'):
        return not isinstance(obj, exclude)
    else:
        return False