There's no general way to tell whether you can iterate over an object repeatedly. File-like objects, in particular, are likely to screw up checks. Fortunately, you don't need to check this. If you just want to make sure do_some_other_work
only gets the rest of the items, you can explicitly request an iterator:
def my_fun(iterable):
iterable = iter(iterable)
# Do whatever.