DEV Community

Cover image for Python Lambda functions
Chris Bongers
Chris Bongers

Posted on • Originally published at daily-dev-tips.com

Python Lambda functions

The other day I wrote about functions in Python, and my good friend Waylon noted me on the existence of Lambda functions.

So I started to research what they are, how they work, and when to use them.

Lambda functions in Python

Lambda functions are tiny functions that have no specific name and can only have one expression.
They are also called anonymous functions.

We can create one of these functions like this:

lambda foo : bar
Enter fullscreen mode Exit fullscreen mode

Foo is the argument, and this can be multiple, and bar is the expression, so this is your one-liner return statement.

To give this more body, let's make a function that divides a number.

divide = lambda num: num / 2
print(divide(4))
Enter fullscreen mode Exit fullscreen mode

As you can see, we can make it, so it's assigned to a variable, and that variable we can pass the arguments into.

However, linters as the one I'm using in Visual Studio Code will use auto-format this to a regular function like this:

def divide(num): return num / 2
print(divide(4))
Enter fullscreen mode Exit fullscreen mode

Which again, does the same thing.

So pretty cool already, and my understanding is they truly come to power inside other objects as quick functions.

Thank you for reading, and let's connect!

Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter

Top comments (2)

Collapse
 
waylonwalker profile image
Waylon Walker

Thanks for the shout out Chris! The real power of the lambda function comes when you need to pass a function to something else and that function is so simple it does not need to be declared. Most often I find myself reaching for them when using with a library that wants a function passed it, so its kind of hard to come up with a great example.

Lets say I have a list of tuples that I want to multiply together.

numbers = [(1, 2), (2, 4), (1, 4), (7, 8)]
Enter fullscreen mode Exit fullscreen mode

I can map over the list with an inline lambda

map(lambda x: x[0] * x[1], numbers)
Enter fullscreen mode Exit fullscreen mode

These days though I would use a list comprehension

[x * y for x, y in numbers]
Enter fullscreen mode Exit fullscreen mode
Collapse
 
dailydevtips1 profile image
Chris Bongers

Hey Waylon,

As fate shows us, I just finished a article on the filter() function and indeed used Lambda for the shorthand one!
What a cool feature I must say.