def isiterable(o):
    """
    Return True if the given object supports having iter() called on it BUT is not an
    instance of string.  Otherwise return False.

    """
    if isinstance(o, (str, bytes)):
        return False
    try:
        iter(o)
    except TypeError:
        return False
    else:
        return True