да. есть такие операторы как global, nonlocal, они сделаны, чтобы явным образом указать интерпретатору, где искать переменную. если внутри цикла есть переменная с именем "a", и снаружи есть переменная с таким же именем, то по умолчанию все операции с "a" будут восприниматься как операции с локальной переменной. а если мы в начале цикла укажем nonlocal a, то интерпретатор забудет, что существует переменная по имени a внутри цикла, пока не встретит оператор local