I could not find any valid example on the internet where I can see the difference between them and why to choose one over the other.
They do very similar things. For small number of iterables itertools.chain(*iterables)
and itertools.chain.from_iterable(iterables)
perform similarly.
The key advantage of from_iterables
lies in the ability to handle large (potentially infinite) number of iterables since all of them need not be available at the time of the call.