Python – Module Attributes
A module is described by its attributes. The attributes of a module perform some tasks or contain some information.
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.
>>> import math
>>> math.__name__
‘math’
In the same way, it gives the name of your custom module.
>>> hello.__name__
‘hello’
However, this can be modified by assigning different strings to this attribute. Change hello.py as shown below.
def SayHello(name): print ("Hi {}! How are you?".format(name)) return __name__="SayHello"
And check the __name__
attribute now
>>> import hello
>>> hello.__name__
‘SayHello’
The value of the __name__
attribute is set to __main__
when checked on the interpreter.
>>> __name__
‘__main__’
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.
print ("__name__ = ", __name__)
Run the above welcome.py in IDLE by pressing F5. You will see the following result.
>>> __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.
import welcome print ("__name__ = ", __name__)
Now run the test.py in IDLE by pressing F5. The __name__
attribute is now “welcome”.
>>> __name__ = welcome
This attribute allows a Python script to be used as an executable or as a module.
The following script contains a fibo()
function which generates numbers in a Fibonacci series up to a given number.
The script fibo.py
checks whether it is executed from the interpreter by its __name__
attribute.
If it is equal to “__main__”, then it means it is being executed from the interpreter and if it is fibo, then it is being used in another module using the import statement.
"""Fibonacci series module""" def fibo(n): FiboList=[] a,b=0,1 while b<n: FiboList.append(b) a, b = b, a+b return FiboList if __name__== "__main__": print ("Fibonacci series", fibo(100))
__doc__ Attribute
The __doc__ attribute denotes the documentation string (docstring) line written in a module code.
>>> import math
>>> math.__doc__
‘This module is always available. It provides access to the mathematical functions defined by the C standard.’
Consider the the following script is saved as test.py module.
"""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.
>>> import test
>>> test.__doc__
‘This is docstring of test module’
__file__ Attribute
__file__
is an optional attribute which holds the name and path of the module file from which it is loaded.
>>> import io
>>> io.__file__
‘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.
>>> import math
>>> math.__dict__
{‘__name__’: ‘math’, ‘__doc__’: ‘This module is always available. It provides a
ccess to the\nmathematical functions defined by the C standard.’, ‘__package__’:
”, ‘__loader__’: <class ‘_frozen_importlib.BuiltinImporter’>, ‘__spec__’: Modu
leSpec(name=’math’, loader=<class ‘_frozen_importlib.BuiltinImporter’>, origin=’
built-in’), ‘acos’: <built-in function acos>, ‘acosh’: <built-in function acosh>
, ‘asin’: <built-in function asin>, ‘asinh’: <built-in function asinh>, ‘atan’:
<built-in function atan>, ‘atan2’: <built-in function atan2>, ‘atanh’: <built-in
function atanh>, ‘ceil’: <built-in function ceil>, ‘copysign’: <built-in functi
on copysign>, ‘cos’: <built-in function cos>, ‘cosh’: <built-in function cosh>,
‘degrees’: <built-in function degrees>, ‘erf’: <built-in function erf>, ‘erfc’:
<built-in function erfc>, ‘exp’: <built-in function exp>, ‘expm1’: <built-in fun
ction expm1>, ‘fabs’: <built-in function fabs>, ‘factorial’: <built-in function
factorial>, ‘floor’: <built-in function floor>, ‘fmod’: <built-in function fmod>
, ‘frexp’: <built-in function frexp>, ‘fsum’: <built-in function fsum>, ‘gamma’:
<built-in function gamma>, ‘gcd’: <built-in function gcd>, ‘hypot’: <built-in f
unction hypot>, ‘isclose’: <built-in function isclose>, ‘isfinite’: <built-in fu
nction isfinite>, ‘isinf’: <built-in function isinf>, ‘isnan’: <built-in functio
n isnan>, ‘ldexp’: <built-in function ldexp>, ‘lgamma’: <built-in function lgamm
a>, ‘log’: <built-in function log>, ‘log1p’: <built-in function log1p>, ‘log10’:
<built-in function log10>, ‘log2’: <built-in function log2>, ‘modf’: <built-in
function modf>, ‘pow’: <built-in function pow>, ‘radians’: <built-in function ra
dians>, ‘remainder’: <built-in function remainder>, ‘sin’: <built-in function si
n>, ‘sinh’: <built-in function sinh>, ‘sqrt’: <built-in function sqrt>, ‘tan’: <
built-in function tan>, ‘tanh’: <built-in function tanh>, ‘trunc’: <built-in fun
ction trunc>, ‘pi’: 3.141592653589793, ‘e’: 2.718281828459045, ‘tau’: 6.28318530
7179586, ‘inf’: inf, ‘nan’: nan}
dir() is a built-in function that also returns the list of all attributes and functions in a module.
Learn more about module attributes in Python Docs.