dmitry1959
Но в таком коде:
def sum_digits(n):
result = 0
while n > 0:
result += n % 10
n //= 10
return result
n = int(input())
print(sum_digits(n))
переменная n (когда n = int(input())) ведь тоже находится в глобальной области видимости как и в предыдущем коде, поскольку она находится вне функции?
Тут в заголовке функции создалась локальная переменная n
def sum_digits(n):
Тут за пределами функции создалась глобальная переменная n
n = int(input())

Та локальная переменная n, которая создалась в заголовке функции, перекрыла глобальную переменную n и функция эту глобальную переменную n после этого перекрытия не видит больше.

Дальше ты о чём спрашиваешь?