Почитайте про ссылки, объекты, область видимости переменных и способы передачи параметров в функцию.
Что видим в коде:
x=5
создали объект со значением "5" и присвоили ссылку на него переменной "х"
def funA(x,y):
x=7
return x
создали функцию с двумя параметрами
в теле функции завели
локальную переменную "х"
в качестве результата возвратили
локальную переменную
funA(x,4)
вызвали функцию с параметрами 5 и 4
print x
напечатали
не локальную переменную "х"
А теперь ответ на Ваш вопрос:
В чем ошибка (почему на выходе из функции 5, а не 7)?
На
выходе из функции как раз 7
>>> x=5
>>> def funA(x,y):
x = 7
return x
>>> funA(x,4)
7
А то, что Вы приняли за "выход" функции есть просто переменная "х", которая понятия не имеет о Вашей функции, что внутри нее творится и что возвращется