What is the purpose of the single underscore "_" variable in Python?
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Puzzle Game 2 Looping
--
Chapters
00:00 What Is The Purpose Of The Single Underscore &Quot;_&Quot; Variable In Python?
00:14 Answer 1 Score 256
00:29 Accepted Answer Score 1010
02:58 Answer 3 Score 135
03:41 Answer 4 Score 32
04:12 Thank you
--
Full question
https://stackoverflow.com/questions/5893...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #variables #namingconventions #metasyntacticvariable
#avk47
ACCEPTED ANSWER
Score 1010
_ has 3 main conventional uses in Python:
To hold the result of the last executed expression in an interactive interpreter session (see docs). This precedent was set by the standard CPython interpreter, and other interpreters have followed suit
For translation lookup in i18n (see the gettext documentation for example), as in code like
raise forms.ValidationError(_("Please enter a correct username"))As a general purpose "throwaway" variable name:
To indicate that part of a function result is being deliberately ignored (Conceptually, it is being discarded.), as in code like:
label, has_label, _ = text.partition(':')As part of a function definition (using either
deforlambda), where the signature is fixed (e.g. by a callback or parent class API), but this particular function implementation doesn't need all of the parameters, as in code like:def callback(_): return True[For a long time this answer didn't list this use case, but it came up often enough, as noted here, to be worth listing explicitly.]
This use case can conflict with the translation lookup use case, so it is necessary to avoid using
_as a throwaway variable in any code block that also uses it for i18n translation (many folks prefer a double-underscore,__, as their throwaway variable for exactly this reason).Linters often recognize this use case. For example
year, month, day = date()will raise a lint warning ifdayis not used later in the code. The fix, ifdayis truly not needed, is to writeyear, month, _ = date(). Same with lambda functions,lambda arg: 1.0creates a function requiring one argument but not using it, which will be caught by lint. The fix is to writelambda _: 1.0. An unused variable is often hiding a bug/typo (e.g. setdaybut usedyain the next line).The pattern matching feature added in Python 3.10 elevated this usage from "convention" to "language syntax" where
matchstatements are concerned: in match cases,_is a wildcard pattern, and the runtime doesn't even bind a value to the symbol in that case.For other use cases, remember that
_is still a valid variable name, and hence will still keep objects alive. In cases where this is undesirable (e.g. to release memory or external resources) an explicitdel namecall will both satisfy linters that the name is being used, and promptly clear the reference to the object.
ANSWER 2
Score 256
It's just a variable name, and it's conventional in python to use _ for throwaway variables. It just indicates that the loop variable isn't actually used.
ANSWER 3
Score 135
Underscore _ is considered as "I don't care" or "throwaway" variable in Python
The python interpreter stores the last expression value to the special variable called
_.>>> 10 10 >>> _ 10 >>> _ * 3 30The underscore
_is also used for ignoring the specific values. If you don’t need the specific values or the values are not used, just assign the values to underscore.Ignore a value when unpacking
x, _, y = (1, 2, 3) >>> x 1 >>> y 3Ignore the index
for _ in range(10): do_something()
ANSWER 4
Score 32
There are 5 cases for using the underscore in Python.
For storing the value of last expression in interpreter.
For ignoring the specific values. (so-called “I don’t care”)
To give special meanings and functions to name of variables or functions.
To use as ‘internationalization (i18n)’ or ‘localization (l10n)’ functions.
To separate the digits of number literal value.
Here is a nice article with examples by mingrammer.