The underscore (_) has special meaning in Python.
If you do not need a specific value(s) while unpacking an object, just assign the value(s) to an underscore.
x, _, y = (1, 2, 3)
# Ignore the multiple values. It is called "Extended Unpacking" which is available in only Python 3.x
x, *_, y = (1, 2, 3, 4, 5) # x = 1, y = 5
# ignore the index
for _ in range(10):
task()
# Ignore a value of specific location
for _, val in list_of_tuples: # [(1,2),(3,4),(5,6)]
print(val) # output - 3
This convention is used for declaring private variables, functions, methods and classes. Anything with this convention are ignored in from module import *
.
This convention should be used for avoiding conflict with Python keywords or built-ins.
class_ = dict(n=50, boys=25, girls=25)
# avoiding clash with the class keyword
Double underscore will mangle the attribute names of a class to avoid conflicts of attribute names between classes. Python will automatically add "_ClassName" to the front of the attribute name which has a double underscore in front of it.
This convention is used for special variables or ( magic )methods such as__init__
, __len__
. These methods provides special syntactic features.
class FileObject:
'''Wrapper for file objects to make sure the file gets closed on deletion.'''
def __init__(self, filepath='~', filename='sample.txt'):
# open a file filename in filepath in read and write mode
self.file = open(join(filepath, filename), 'r+')