2012-04-27 28 views
32

Digamos que tengo una funciónAsignación de una función a una variable

def x(): 
    print(20) 

Ahora desea asignar la función a una variable llamada y, de manera que si uso el y llama a la función x nuevo. si simplemente hago la tarea y = x(), devuelve None.

+0

He editado su pregunta a cortarlo a la [información relevante solamente.] (http://meta.stackexchange.com/a/128552/102937). Su entusiasmo es excelente, pero en el futuro, concéntrese en explicar su pregunta real. –

+0

También edité porque lo que quiere hacer aquí es * asignar una función a una variable *, no * asignar una variable a una función *. –

Respuesta

64

Simplemente no llama a la función.

>>>def x(): 
>>> print(20) 
>>>y = x 
>>>y() 
20 

Los corchetes indican pitón que está llamando a la función, por lo que cuando se los pone ahí, se llama a la función y asigna el valor y devueltos por x (que en este caso es None).

+1

Funciona como objetos de primera clase, * oh yeah *. –

+0

Muchas gracias. Hasta ahora, de hecho, de alguna manera pensé que era bastante decente en Python: D – geekkid

+2

@geekkid: Vale la pena señalar que ** cualquier objeto ** puede hacerse "invocable", como una función. Todo lo que tienes que hacer es definir el método '__call __()' del objeto. –

10

Cuando asigna una función a una variable no utilice use el() sino simplemente el nombre de la función.

En su caso dado def x(): ..., y variables silly_var que haría algo como esto:

silly_var = x 

y entonces usted puede llamar a la función ya sea con

x() 

o

silly_var() 
5

cuando realiza y=x() usted es real Asignando y al resultado de llamar al objeto de función x y la función tiene un valor de retorno de None. Las llamadas a funciones en python se realizan usando (). Para asignar x to y para que pueda llamar y igual que lo haría x le asigne el objeto de la función X a Y como y=x y llamar a la función utilizando y()

Cuestiones relacionadas