Functions allow programmers to organize code into reusable blocks. There are built-in functions and user-defined functions. Functions make code easier to develop, test and reuse. Variables inside functions can be local, global or nonlocal. Parameters pass data into functions, while functions can return values. Libraries contain pre-defined functions for tasks like mathematics and string manipulation.