¿Se evalúan las funciones cuando se pasan como parámetros?

Si tengo un código como este:

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

¿Qué se evalúa primero cuando llamo self.run (self.connect)?

ejecutar con las cosas en conectar ya hecho? ¿O conectarte con self.connect para ser evaluado?

Pasar una función como parámetro no la llama:

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

por supuesto, si pasa una llamada de función a otra función, lo que está pasando es el valor de retorno:

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

Tenga en cuenta el orden en que se llaman: f2 se llama primero y su valor de retorno se pasa a f1 .

Ninguno de los códigos en su pregunta realmente llama a connect() , por lo que la función nunca se invoca. Todo lo que self.run(self.connect) hace es self.runner un sinónimo de self.connect .