2011-06-22 8 views
5

Quiero pasar una función a una función en Python. Sé que puedo hacer esto simplemente poniendo el nombre de la función como un parámetro, por ejemplo:Obtener objeto de función para las funciones int() y float()

blah(5, function) 

Sin embargo, quiero pasar a la función y la función int()float() a esta función. Si acabo de poner el nombre de la función, entonces asume que me refiero a los tipos int y float, no a las funciones para convertir cadenas en entradas y flotantes.

¿Hay alguna manera de pasar la función en lugar del tipo?

Respuesta

11

Acaba de pasar int y float está bien. Tiene razón en que esto realmente pasará objetos de tipo en lugar de funciones, pero eso no es importante. Lo importante es que el objeto pasado es invocable y llamar a los objetos tipo hará lo que esperas.

+1

¿Por qué necesitarías pasar el int como argumento? – Trufa

+4

@Trufa: Solo dos ejemplos: 'defaultdict (int)' y 'map (int, string_list)'. Hay muchos más. –

+0

'ordenados (['1', '100', '99'], clave = int)' –

3

Los objetos tipo son lo que usted quiere.

>>> def converter(value, converter_func): 
...  new_value = converter_func(value) 
...  print new_value, type(new_value) 
... 
>>> converter('1', int) 
1 <type 'int'> 
>>> converter('2.2', float) 
2.2 <type 'float'> 
>>> 
Cuestiones relacionadas