Оцениваются ли функции при передаче в качестве параметров?

если у меня есть такой код:

def handler(self): self.run(self.connect) def connect(self, param): #do stuff... def run(self, connector): self.runner = connector 

Что оценивалось первым, когда я вызываю self.run (self.connect)?

  • В Python, что определяет порядок при итерации через kwargs?
  • Должен ли я добавить конечную запятую после последнего аргумента в вызове функции?
  • Принудительное именование параметров в Python
  • Python: как передать аргументы функции __code__ функции?
  • Передача аргументов C # vs Python
  • Что означает только звезда * в объявлении функции?
  • запустить с материалом в соединении уже сделано? или подключиться к self.connect еще не оценено?

  • Python: как передать аргументы функции __code__ функции?
  • Должен ли я добавить конечную запятую после последнего аргумента в вызове функции?
  • Почему Python lambdas полезен?
  • Функция python как аргумент функции?
  • Python: динамически создавать функцию во время выполнения
  • В Python я могу указать аргумент аргумента функции в терминах других аргументов?
  • 2 Solutions collect form web for “Оцениваются ли функции при передаче в качестве параметров?”

    Передача функции в качестве параметра не вызывает ее:

     In [105]: def f1(f): .....: print 'hi' .....: return f .....: In [106]: def f2(): .....: print 'hello' .....: In [107]: f1(f2) hi Out[107]: <function __main__.f2> 

    конечно, если вы передадите вызов функции другой функции, то вы передаете возвращаемое значение:

     In [108]: f1(f2()) hello hi 

    Обратите внимание на порядок, в котором они вызывается: сначала вызывается f2 , а его возвращаемое значение передается в f1 .

    Ни один из кода в вашем вопросе фактически не вызывает connect() , поэтому функция никогда не вызывается. Все, что self.run(self.connect) делает, делает self.runner синонимом self.connect .

    Python - лучший язык программирования в мире.