В Python присваивание включает в себя неявное объявление (просто объявление означает только «имя существует» и не вызывает статический тип).
for a in pets:
работает просто отлично (поэтому все строкивы ожидаете, что напечатаны, цикл не пропускается по той причине, на которую вы рассчитываете), потому что цикл for
присваивает a
, неявно объявляя его.Это не похоже на C ++, где требуется объявление типа std::string a
(до или в цикле) или auto a
(в цикле), чтобы объявить, что a
существует с известным типом.
Для ясности, C ++ требует, чтобы a
был объявлен только (и это могло бы быть сделано в самом цикле, например, for (const auto& a : pets) {
), а не , инициализированным , чтобыЦикл работы.