Tengo una función que espera operar en un tipo numérico. Estoy leyendo los números para operar desde un archivo, así que cuando los leo son cadenas, no numéricos. ¿Es mejor hacer que mi función sea tolerante con otros tipos (opción (A) a continuación) o convertir a un valor numérico antes de llamar a la función (opción (B) a continuación)?Python convert style: dentro o fuera de función?
# Option (A)
def numeric_operation(arg):
i = int(arg)
# do something numeric with i
# Option (B)
def numeric_operation(arg):
# expect caller to call numeric_operation(int(arg))
# do something numeric with arg
No entiendo lo que está tratando de decir. "Cualquier cosa que hagas simplemente ocultará el error". En tu ejemplo, no hacer nada oculta el hecho de que foo no puede manejar cadenas. Si llamo a foo ("hello") lanza pitón "no puedo convertir int a str". Hugh? No te di un int? ¿Qué demonios está mal con esta función? Yo diría que el error ahora está oculto al máximo :) – pwuertz
Mi punto es que su función espera datos numéricos. Algo debería salir mal cuando intente usar una cadena en su lugar, lo que seguramente causará un 'TypeError'. __Eso__ debería ser el error que le pasas al usuario, el del bit que _realmente salió mal_. – katrielalex