¿Es posible utilizar try catch block dentro de una función lambda? Necesito la función lambda para convertir una determinada variable en un entero, pero no todos los valores se podrán convertir en enteros.Python Prueba Catch Block dentro de lambda
Respuesta
Nope. Un Python lambda solo puede ser una sola expresión. Usa una función nombrada.
Es conveniente escribir una función genérica para los tipos de conversión:
def tryconvert(value, default, *types):
for t in types:
try:
return t(value)
except ValueError, TypeError:
continue
return default
Entonces usted puede escribir su lambda:
lambda v: tryconvert(v, 0, int)
También podría escribir tryconvert()
por lo que vuelve una función que toma el valor a convertir; a continuación, no es necesario el lambda:
def tryconvert(default, *types):
def convert(value):
for t in types:
try:
return t(value)
except ValueError, TypeError:
continue
return default
return convert
Ahora tryconvert(0, int)
devuelve una función, convert(value)
, que toma un valor y lo convierte en un entero, y devuelve 0
si esto no se puede hacer.
En este caso concreto, se puede evitar el uso de un bloque try
así:
lambda s: int(s) if s.isdigit() else 0
Los isdigit()
string method devuelve verdadero si todos los caracteres de s
son dígitos. (. Si es necesario aceptar los números negativos, tendrá que hacer alguna comprobación adicional)
Dependiendo de su necesidad, otro enfoque podría ser mantener el intento de captura fuera fn lambda
toint = lambda x : int(x)
strval = ['3', '']
for s in strval:
try:
print 2 + toint(s)
except ValueError:
print 2
de salida:
5
2
- 1. try/catch block en Arduino
- 2. Benchmark de Java Try/Catch Block
- 3. @try - catch block en Objective-c
- 4. ¿Se ejecuta `finally` block en caso de que haya` return` dentro de un `try` o un` catch` block?
- 5. Prueba de una lambda
- 6. Prueba Catch Performance Java
- 7. Lanzar excepciones en un PHP Try Catch block
- 8. ¿Qué es mejor usar, un bloque __try/__ except block o un try/catch block?
- 9. Objetivo C: prueba unitaria dispatch_async block?
- 10. lambda devuelve lambda en python
- 11. Lambda dentro del bucle
- 12. Creación lambda dentro de un bucle
- 13. MySQL PDO: ¿qué debería estar dentro de try {block}?
- 14. Python Lambda Count/Loop Function
- 15. Javascript try ... catch ... else ... finalmente como Python, Java, Ruby, etc.
- 16. Python Lambda Problems
- 17. Python, lambda, busque mínimo
- 18. Python lambda function
- 19. Pass lambda para parametrizado NUnit prueba
- 20. expresión lambda porque dentro de la lista
- 21. BadPaddingException: pad block corrupto
- 22. extraño comportamiento: Lambda dentro de lista por comprensión
- 23. ¿Cómo manejar las excepciones no detectadas en javascript sin try/catch-block?
- 24. ¿por qué no es posible insertar código entre try y catch block?
- 25. ¿Parallel.ForEach Block?
- 26. ordenación python sin expresiones lambda
- 27. Python lambda con expresión regular
- 28. Alcance variable y Try Catch en python
- 29. Python ... clases de prueba?
- 30. ¿Por qué try {...} finalmente {...} es bueno; prueba {...} catch {} ¿malo?
http://stackoverflow.com/questions/7108193/frequently-repeated-try-except-in-python – squiguy
no _need_ una función lambda. Solo usa una función nombrada en su lugar –