Python Closure Gotcha: Why That One-Liner Returns [8,8,8,8,8]! 🤯

Опубликовано: 01 Май 2026
на канале: PowerPro Academy
1,114
like

Ready for a real Python brainteaser? In this short, we dive into a notorious interview trap: a list comprehension with lambdas in it, that doesn’t behave as you'd expect.

[f(2) for f in [lambda x: x * i for i in range(5)]]


At first glance, you'd expect [0, 2, 4, 6, 8]. But the real result is [8, 8, 8, 8, 8] — shocking, right?

Here’s why:

The lambdas inside the comprehension capture the variable i by reference, not by value.

By the time any lambda runs, the loop has finished and i = 4.

So all lambdas multiply by 4.

This is a classic example to test your understanding of closures, scope, and late binding in Python.

Perfect for developers preparing for:

Technical interviews

Python coding challenges

Understanding advanced function mechanics


Python closures, Python lambda gotcha, Python late binding, Python interview question, lambda loop Python, Python tricky question, Python list comprehension lambda, debugging closures in Python, Python advanced tips, Python coding interview

#python #codinginterview #pythontips #closures #LambdaFunctions #learnpython #pythonshorts #developermindset #interviewpreparation #codingtricks #programmingtips #PythonGotchas