Let's go back to our words module and experiment with it further at the REPL. On this occasion we'll import just the module:
$ python3
Python 3.5.0 (default, Nov 3 2015, 13:17:02)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import words
The import statement binds a module object to the name words in the current namespace. We can determine the type of any object by using the type() built-in function:
>>> type(words)
<class 'module'>
If we want to see the attributes of an object, we can use the dir() built-in function in a Python interactive session to introspect an object:
>>> dir(words)
['__builtins__', '__cached__', '__doc__', '__file__', '__initializing__',
'__loader__', '__name__', '__package__', 'fetch_words', 'main',
'print_items', 'sys', 'urlopen']
The dir() function returns a sorted list of the module attribute names, including:
- The ones we defined such as the function fetch_words()
- Any imported names such as sys and urlopen
- Various special dunder attributes such as __name__ and __doc__ which
reveal the inner-workings of Python