This package includes all files needed for embedding Python into the Source SDK. See the description for tutorial link
Adding a dynamic scripting language to a game allows for rapid changing of game elements and also allows the community to change and expand the game it self.
There are many scripting languages to choose from so why Python? Compared to other scripting languages Python offers a relatively simple syntax, dynamic typing, vast standard libraries, easy to interface with C/C++ via boost.python and a lot of documentation and tutorials.
However, python does have a few setbacks. Its very hard to sandbox python thus it can open up a lot of exploits to server operators and there is some complexities that the programmers have to deal with (but this is better than having the end user deal with other complexities that python removes).