def iterable(obj):
    """Returns ``True`` if *obj* can be iterated over and is *not* a  string."""
    if type(obj) is str:
        return False
    if hasattr(obj, 'next'):
        return True
    try:
        len(obj)
    except TypeError:
        return False
    return True
