Python не выдаёт ошибку при итерации по пустым коллекциям, потому что в дизайне языка предусмотрен такой эффект. 3
Если бы при работе с пустыми коллекциями возникали исключения, это могло бы усложнить протокол написания пользовательских итераторов. 3 Например, пришлось бы добавлять дополнительный метод, который сигнализировал бы циклу for о том, что коллекция пуста ещё до начала итерации. 3
Вместо этого Python позволяет пустыми коллекциям просто не выполняться. 2 Это считается удобным особым случаем, который просто не требует дополнительных действий. 3