я бы мог возразить - иногда для большего удобства может не хватать даже exec.
Например, декораторы python, на мой взгляд, не очень удачны архитектурно - вы можете заметить это при их частом использовании.
А именно - они заставляют создавать отдельные функции для них, которые далеко не всегда нужны и логичны.
Я имею в виду, вы не можете декорировать одну или несколько строк прямо по ходу кода.
это немного похоже на свистопляску с колбеками - там тоже приходится порождать (зачастую лишние в плане смысла) сущности-функции.