f1
- это функция, которая возвращает функцию f2
и ей передается функция f
, которая вызывается в функции f2
.Когда вы присваиваете x=f1(f3)
, вы вызываете функцию f1
, которая возвращает функцию f2
, которая присваивается переменной x
.Когда вы затем вызываете x()
, x назначается вызываемая функция f2
и, в свою очередь, вызывает f3
, которая была передана как переменная f
в f1
.
, если вы вызываете x=f1
Вы назначаете функцию f1
переменной x
.Если вы затем вызываете x(f3)
, вы вызываете функцию f1
и передаете f3
в качестве аргумента f
.f1
возвращает функцию f2
, которая никогда не вызывается.Если вы присвоите возвращаемое значение новой переменной y y=x(f3)
, а затем вызовете y()
, переменной y
теперь будет присвоена функция f2
, которая при правильном вызове печатает вывод.