Объяснение:



Так как здесь нигде нет обращения к глобальной переменной, то всё работает достаточно просто. Сначала выводится str, который находится внутри func() — его печать происходит внутри enclosed()



Затем печатается уже str, который был объявлен в самом начале кода — соответствующая команда является последней в программе