Is it possible to use try catch block inside of a lambda function. I need the lambda function to convert a certain variable into an integer, but not all of the values will be able to be converted into integers.
Nope. A Python lambda can only be a single expression.
If all you want is a lambda expression that raises an arbitrary exception, you can accomplish this with an illegal expression. For instance, lambda x: [][0] will attempt to access the first element in an empty list, which will raise an IndexError.
Just like a normal function, a Lambda function can have multiple arguments with one expression.
In Python, lambda functions are quite limited. They can take any number of arguments; however they can contain only one statement and be written on a single line. This will apply the anonymous function lambda x: x * 2 to every item returned by range(10) .
Nope. A Python lambda can only be a single expression. Use a named function.
It is convenient to write a generic function for converting types:
def tryconvert(value, default, *types): for t in types: try: return t(value) except (ValueError, TypeError): continue return default
Then you can write your lambda:
lambda v: tryconvert(v, 0, int)
You could also write tryconvert()
so it returns a function that takes the value to be converted; then you don't need the lambda:
def tryconvert(default, *types): def convert(value): for t in types: try: return t(value) except (ValueError, TypeError): continue return default # set name of conversion function to something more useful namext = ("_%s_" % default) + "_".join(t.__name__ for t in types) if hasattr(convert, "__qualname__"): convert.__qualname__ += namext convert.__name__ += namext return convert
Now tryconvert(0, int)
returns a function convert_0_int
that takes a value and converts it to an integer, and returns 0
if this can't be done. You can use this function right away (not saving a copy):
mynumber = tryconert(0, int)(value)
Or save it to call it later:
intconvert = tryconvert(0, int) # later... mynumber = intconvert(value)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With