Lesson: Programming Functions in Python
Introduction to Functions
Functions are one of the most powerful concepts in programming. They allow you to group code into reusable blocks, making your code more organized, readable, and efficient. Functions also help define clear interfaces that allow other programmers to use your code without needing to understand the entire implementation.
In Python, functions are defined using the def
keyword, followed by the function’s name and parentheses that may contain arguments (input parameters). The code inside the function is indented and forms a block that is executed whenever the function is called.
1. What is a Function?
A function is a block of code that performs a specific task. When you define a function, you’re essentially creating a recipe for some action that you can later run (or “call”) at any time. A function can take in data (parameters), process that data, and return a result.
- Advantages of using functions:
- Reusability: You can define a function once and reuse it multiple times.
- Modularity: Functions allow you to break your program into smaller, manageable parts.
- Maintainability: Functions make it easier to maintain and modify your code.
2. Defining a Function
To define a function in Python, you use the def
keyword followed by the function name and parentheses. The block of code inside the function is indented.
Here is the basic syntax:
Example:
This function, greet
, when called, will simply print “Hello, world!” to the console.
3. Adding Parameters to a Function
Functions can accept parameters that allow them to operate on different pieces of data. Parameters are specified inside the parentheses.
Example with Parameters:
Now the function greet_person
takes an argument name
. You can call this function with different values:
4. Returning a Value
A function can also return a value to the caller using the return
statement.
Example:
When you call this function, it will return the sum of a
and b
:
5. How to Call a Function
Once a function is defined, you can call it by writing its name followed by parentheses. If the function has parameters, you must pass the arguments within those parentheses.
Example:
For a function that accepts arguments:
6. Function Example with Multiple Concepts
Here, we define and use three different functions to show how parameters, returning values, and function calls work together.
Assignment: Create Your Own Functions
Now it’s your turn to write functions based on the examples and concepts we’ve covered.
Task:
- Create a function
list_benefits()
that returns a list of strings:- “More organized code”
- “More readable code”
- “Easier code reuse”
- “Allowing programmers to share and connect code together”
- Create a second function
build_sentence(info)
that receives a single argument (info
) and returns a string in the format:<info> is a benefit of functions!
- Create a third function
name_the_benefits_of_functions()
that:- Calls
list_benefits()
to get the list of benefits. - Iterates through the list and prints each benefit by using the
build_sentence()
function.
- Calls
Solution
Output:
Answer Key for the Assignment
list_benefits()
returns a list of strings representing the benefits of using functions in code.
build_sentence(info)
takes a benefit as an argument and returns a sentence stating that it’s a benefit of functions.
name_the_benefits_of_functions()
combines both of the above functions and prints out the benefits in sentence form.
Summary
In this lesson, we covered:
- How to define functions in Python using the
def
keyword. - How to pass parameters and return values from functions.
- How to call functions and organize your code for reuse.
- An example exercise where you created and combined multiple functions.
Assignment (Advanced)
Challenge:
- Modify the
build_sentence()
function to accept an optional argumentexplanation
(with a default value of “a benefit of functions”) and append this explanation to each sentence.
a. Add typing hints for better readability. b. Add unit tests for the build_sentence()
function.
Answer Key for the Advanced Assignment – SPOILER ALERT
Challenge: Modify build_sentence()
to accept an optional argument explanation
.
Below is the solution with an updated build_sentence()
function that accepts an optional explanation
argument, which defaults to “a benefit of functions” if not provided.
Solution
Output:
a. Adding Typing Hints for Better Readability
Here’s the same solution with typing hints to improve code clarity and maintainability.
b. Adding Unit Tests for the build_sentence()
Function
Here’s how you can write unit tests for the build_sentence()
function using Python’s built-in unittest
framework:
To run the test, save this script and run it with Python. It will automatically verify that the build_sentence()
function behaves as expected.
Summary of Key Points:
- Optional Argument: The
build_sentence()
function now has an optional argumentexplanation
with a default value. - Typing Hints: Typing hints were added to improve readability and make it clear what types the function expects.
- Unit Tests: Simple unit tests were added to ensure the
build_sentence()
function behaves as expected with both the default and customexplanation
.
This completes the advanced assignment answer key!