Python Module Attributes: name, doc, file, dict

Python module has its attributes that describes it. Attributes perform some tasks or contain some information about the module. Some of the important attributes are explained below:

__name__ Attribute

The __name__ attribute returns the name of the module. By default, the name of the file (excluding the extension .py) is the value of __name__attribute.

Example: __name__ Attribute
import math
print(math.__name__)  #'math'

In the same way, it gives the name of your custom module e.g. calc module will return 'calc'.

Example: __name__ Attribute
import calc 
print(calc.__name__)  #'calc'

However, this can be modified by assigning different strings to this attribute. Change hello.py as shown below.

Example: Set __name__
def SayHello(name):
    print ("Hi {}! How are you?".format(name))
__name__="SayHello"

And check the __name__ attribute now.

Example: Set __name__
import hello
print(hello.__name__)  #'SayHello'

The value of the __name__ attribute is __main__ on the Python interactive shell and in the main.py module.

Example: __main__
print(__name__) 

When we run any Python script (i.e. a module), its __name__ attribute is also set to __main__. For example, create the following welcome.py in IDLE.

Example: welcome.py
print("__name__ = ", __name__)

Run the above welcome.py in IDLE by pressing F5. You will see the following result.

Output in IDLE:
__name__ =  __main__

However, when this module is imported, its __name__ is set to its filename. Now, import the welcome module in the new file test.py with the following content.

Example: test.py
import welcome
print("__name__ = ", __name__)

Now run the test.py in IDLE by pressing F5. The __name__ attribute is now "welcome".

Example: test.py
__name__ =  welcome

This attribute allows a Python script to be used as an executable or as a module.

Visit __main__ in Python for more information.

__doc__ Attribute

The __doc__ attribute denotes the documentation string (docstring) line written in a module code.

Example:
import math  

print(math.__doc__)

Consider the the following script is saved as greet.py module.

greet.py
"""This is docstring of test module"""
def SayHello(name):
    print ("Hi {}! How are you?".format(name))
            return

The __doc__ attribute will return a string defined at the beginning of the module code.

Example: __doc__
import greet

print(greet.__doc__)

__file__ Attribute

__file__ is an optional attribute which holds the name and path of the module file from which it is loaded.

Example: __file__ Attribute
import io

print(io.__file__) #output: 'C:\\python37\\lib\\io.py'
    

__dict__ Attribute

The __dict__ attribute will return a dictionary object of module attributes, functions and other definitions and their respective values.

Example: __dict__ Attribute
import math

print(math.__dict__)

The dir() is a built-in function that also returns the list of all attributes and functions in a module.

Example: dir()
import math

print(dir("math"))

You can use the dir() function in IDLE too, as shown below.

Know Module Attributes and Methods

Learn more about module attributes in Python Docs.