Skip to content Skip to sidebar Skip to footer

Masking The Built-in Variable With Its Magic Behavior?

I am not able to follow this statement in python tutorials: This variable should be treated as read-only by the user. Don’t explicitly assign a value to it — you would create

Solution 1:

In the interactive prompt, _ has "magic" behavior -- it gets set to the value of whatever expression was evaluated last:

>>> 3 + 3
6
>>> _
6

If, however, you assign something to a variable named _ yourself, then you only "see" that variable, and the magic variable is hidden ("masked"):

>>> _ = 3
>>> 3 + 3
6
>>> _
3

This happens because your local variable _ is unrelated to the variable that has the magic behavior, it just happens to have the same name.

So don't do that, not in the interactive prompt anyway.


Solution 2:

It means exactly what it says it means; you should not assign anything to the _ variable as that would hide the real magic variable:

>>> 1 + 1
2
>>> _
2
>>> _ = 'foo'
>>> 2 + 2
4
>>> _
'foo'

The magic _ variable stores the result of the last expression that was echoed, but by assigning to _ you no longer can 'see' this magic variable. Looking up _ shows whatever value I assigned to it now.

Luckily, you can also delete the shadowing _ name again:

>>> del _
>>> 2 + 2
4
>>> _
4

Post a Comment for "Masking The Built-in Variable With Its Magic Behavior?"