.profile all do pretty much the same thing: set up and define functions, variables, and the sorts.
The main difference is that
.bashrc is called at the opening of a non-login but interactive window, and
.bash_profile and the others are called for a login shell. Many people have their
.bash_profile or similar call
A code block is a piece of Python program text that can be executed as a unit, such as a module, a class definition or a function body. Some code blocks (like modules) are normally executed only once, others (like function bodies) may be executed many times. Code blocks may textually contain other code blocks. Code blocks may invoke other code blocks (that may or may not be textually contained in them) as part of their execution, e.g., by invoking (calling) a function.