If you’ve ever written or read Python code, you might have stumbled upon a single underscore ( _
) used as a variable. At first glance, it looks meaningless — but in reality, _
has several hidden uses that make Python code cleaner and more powerful.
Let’s explore where _
shows up and why it matters.
1. In the Python REPL (Interactive Shell)
When using Python’s REPL (the interactive shell), _
stores the result of the last evaluated expression.
>>> 5 + 7
12
>>> _ * 2
24
Here, _
remembers 12
and multiplies it by 2
. It’s a neat shortcut for quick calculations.
2. As a “Throwaway” Variable in Loops
Sometimes you need a loop but don’t actually care about the loop variable. Instead of wasting a variable name, Python convention is to use _
.
for _ in range(3):
print("Hello!")
Output:
Hello!
Hello!
Hello!
This signals to readers: “I’m ignoring the loop variable on purpose.”
3. In Value Unpacking
When unpacking tuples or lists, you can use _
to ignore values you don’t need.
x, _, y = (1, 2, 3)
print(x, y) # 1 3
This makes code cleaner and easier to read.
4. For Translation in Django (Advanced Use)
In some frameworks like Django, _
is commonly used for marking strings that need translation.
from django.utils.translation import gettext as _
print(_("Hello, World!"))
Here, _
is just an alias for Django’s translation function.
Why It Matters
The underscore (_
) isn’t just a random placeholder — it’s a versatile tool in Python that:
- Stores last results in REPL
- Acts as a throwaway variable in loops
- Ignores unwanted values during unpacking
- Supports translation in Django
Key Takeaway
Next time you see _
in Python, don’t ignore it — it’s a tiny variable with big superpowers.