#python #python-3.x #function #arguments
Вопрос:
Я видел некоторые программы, в которых используется приведенный ниже формат.
x = function(arguments)(variable)
Я искал в Интернете, но не знал, как это называется, и, следовательно, не смог найти ничего, связанного с этим.
Я хочу знать, как называется этот формат и как он работает.
Комментарии:
1. Это не формат . Функции являются первоклассными объектами в Python, поэтому вызов функции может возвращать другую функцию. В вашем примере вызов
function(arguments)
возвращает функцию. Давайте предположим, что функция, которую он возвращает, таковаmath.sqrt()
. Код вычисляетmath.sqrt(variable)
и присваивает результатx
.2. В этом нет ничего особенного. Мы можем предположить, что
function(arguments)
возвращает некоторый вызываемый объект , вероятно, другую функцию (или, возможно, класс), которая затем немедленно вызывается ,function(arguments)(variable)
— >some_callable(variable)
Ответ №1:
В python следует помнить, что все является объектом, даже функции. Это означает, что функции могут быть назначены именам переменных и даже могут быть возвращены из других функций. Это то, что делается в вашем коде. Поскольку на самом деле вызываются две функции, давайте переименуем их в foo
и bar
. Затем ваш вызов функции:
x = foo(arguments)(variable)
Определение функции foo
похоже на
def foo(arguments):
def bar(variable):
return (something with arguments and variable)
return bar
Таким образом, функция foo возвращает панель функций, которая при вызове возвращает результат.
Это полезно, например, при создании декораторов.
Комментарии:
1.
bar
Функцию не нужно определять внутриfoo
, не так ли?2. @MuhdMairaj нет. Здесь важно понять, что функции ведут себя не иначе, чем что-либо другое.