Introduction to Computer Science/4.1 What is a Function and Why Use Them?

4.1 What is a Function and Why Use Them?

MDX Parsing Error

[next-mdx-remote] error compiling MDX: Expected a closing tag for `<strong>` (53:3-53:11) before the end of `strong` 51 | A great use for a function is to handle a repetitive part of a program, like the chorus of a song. In the Trinket below, we define a function for the chorus and then call it between the verses. Notice how much cleaner and more organized this is than re-typing the chorus every time! 52 | > 53 | **<strong><PythonSandbox codeBase64="IyBDb2RlIGdlbmVyYXRlZCBieSBBSSBTdHVkaW8NCiMgUmV2aWV3ZWQvZWRpdGVkIGJ5IEpvaG4gSG9sbWVzDQojIE9jdCAyNCwgMjAyNQ0KDQojIC0tLSBVc2luZyBhIEZ1bmN0aW9uIHRvIEF2b2lkIFJlcGV0aXRpb24gLS0tDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBTVEVQIDE6IERFRklORSB0aGUgZnVuY3Rpb24uDQojIFRoaXMgY29kZSBpcyBsaWtlIG91ciAicmVjaXBlIiBmb3IgdGhlIGNob3J1cy4NCiMgSXQgZG9lcyBOT1QgcnVuIHVudGlsIHdlIGNhbGwgaXQgYnkgbmFtZS4NCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGVmIHNpbmdfY2hvcnVzKCk6DQogICAgcHJpbnQoIiAgIE9oLCBQeXRob24gaXMgdGhlIGNvZGUgZm9yIG1lLCIpDQogICAgcHJpbnQoIiAgIFdpdGggZnVuY3Rpb25zLCBjbGVhbiBhbmQgZnJlZS4iKQ0KICAgIHByaW50KCIgICBJJ2xsIGNhbGwgdGhpcyBjaG9ydXMgb25jZSBvciB0d2ljZSwiKQ0KICAgIHByaW50KCIgICAnQ2F1c2UgcmVwZWF0aW5nIGNvZGUgaXMgbm90IHNvIG5pY2UhIikNCiAgICBwcmludCgpICMgQWRkIGEgYmxhbmsgbGluZSBmb3Igc3BhY2luZw0KDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBTVEVQIDI6IENBTEwgdGhlIGZ1bmN0aW9uLg0KIyBOb3csIHdlIHdyaXRlIHRoZSBtYWluIHBhcnQgb2Ygb3VyIHByb2dyYW0uDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBQcmludCB0aGUgZmlyc3QgdmVyc2UNCnByaW50KCJWZXJzZSAxOiIpDQpwcmludCgiSSB3cm90ZSBzb21lIGNvZGUsIGl0IHdhcyB0ZW4gbGluZXMgbG9uZywiKQ0KcHJpbnQoIkkgY29weS1wYXN0ZWQsIGFuZCB0aGVuIGl0IHdhcyB3cm9uZy4iKQ0KcHJpbnQoKQ0KDQojIENhbGwgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgdGhlIGNob3J1cw0Kc2luZ19jaG9ydXMoKQ0KDQojIFByaW50IHRoZSBzZWNvbmQgdmVyc2UNCnByaW50KCJWZXJzZSAyOiIpDQpwcmludCgiSSBjaGFuZ2VkIGEgbGluZSwganVzdCBhIGxpdHRsZSBiaXQsIikNCnByaW50KCJCdXQgaGFkIHRvIGNoYW5nZSBpdCBpbiB0aHJlZSBwbGFjZXMsIHNvIEkgcXVpdC4iKQ0KcHJpbnQoKQ0KDQojIENhbGwgdGhlIGZ1bmN0aW9uIEFHQUlOLiBXZSBhcmUgcmV1c2luZyB0aGUgY29kZSENCnNpbmdfY2hvcnVzKCkNCiMgLS0tIENhbGwgdG8gQWN0aW9uIC0tLQ0KcHJpbnQoIlxuIiArICItIiAqIDQwKQ0KcHJpbnQoIvCfkqEgWU9VUiBUVVJOIFRPIEVYUEVSSU1FTlQhIikNCnByaW50KCIxLiBBZGQgYW5vdGhlciB2ZXJzZSAoVmVyc2UgMykgdG8gdGhlIHNvbmcuIikNCnByaW50KCIyLiBDYWxsIHRoZSBgc2luZ19jaG9ydXMoKWAgZnVuY3Rpb24gb25lIG1vcmUgdGltZSBhZnRlciB5b3VyIG5ldyB2ZXJzZS4iKQ0KcHJpbnQoIjMuIFRyeSBjaGFuZ2luZyBhIGxpbmUgaW5zaWRlIHRoZSBgc2luZ19jaG9ydXMoKWAgZnVuY3Rpb24uIE5vdGljZSBob3cgaXQiKQ0KcHJpbnQoIiAgIGNoYW5nZXMgdGhlIG91dHB1dCBpbiBCT1RIIHBsYWNlcyB5b3UgY2FsbGVkIGl0ISBUaGlzIGlzIHRoZSBwb3dlciBvZiBmdW5jdGlvbnMuIikNCnByaW50KCItIiAqIDQwKQ==" /> | ^ 54 | {/* === KEY TAKEAWAY BOX === */}**</strong> 55 | More information: https://mdxjs.com/docs/troubleshooting-mdx

Raw Content:

<!-- === LEARNING GOALS HEADER === -->

<Callout title="🎯 Learning Goals for This Page" type="info">
- Define "function" as a named, reusable block of code.
- Use the `def` keyword to **define**a simple function.
- **Call** a function to execute its code.
- Explain the benefits of using functions (organization and reusability).
</Callout>

<!-- === MAIN CONTENT AREA === -->

## Organizing Your Code with Functions

As our programs get longer, they can become messy and hard to read. Imagine a program with hundreds of lines of code—it would be very difficult to manage. To solve this, we use **functions**.

A function is a named block of code that performs a specific task. Think of it as creating your own custom command in Python.

### The Two-Step Process

Working with functions is always a two-step process:

1. **Define the Function**: You create the "recipe." You give it a name and write the lines of code that belong to it. The code inside a function does *not* run when it is defined.
2. **Call the Function**: You "run the recipe." At some later point in your program, you type the function's name to execute the code inside it. You can call the same function as many times as you want!

### The Syntax

We use the `def` keyword (short for "define") to create a function. Just like with `if` statements and loops, all the code belonging to the function must be indented.

```python
# --- 1. DEFINING the function ---
# This code does NOT run yet. We are just saving the instructions.
def say_hello():
    print("--------------------")
    print("Hello! Welcome to the program.")
    print("--------------------")

# --- 2. CALLING the function ---
# Now, we execute the code inside say_hello().
say_hello()

# We can call it again and again!
say_hello()

```

---

### Live Example: The Song Chorus

A great use for a function is to handle a repetitive part of a program, like the chorus of a song. In the Trinket below, we define a function for the chorus and then call it between the verses. Notice how much cleaner and more organized this is than re-typing the chorus every time!

**<strong><PythonSandbox codeBase64="IyBDb2RlIGdlbmVyYXRlZCBieSBBSSBTdHVkaW8NCiMgUmV2aWV3ZWQvZWRpdGVkIGJ5IEpvaG4gSG9sbWVzDQojIE9jdCAyNCwgMjAyNQ0KDQojIC0tLSBVc2luZyBhIEZ1bmN0aW9uIHRvIEF2b2lkIFJlcGV0aXRpb24gLS0tDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBTVEVQIDE6IERFRklORSB0aGUgZnVuY3Rpb24uDQojIFRoaXMgY29kZSBpcyBsaWtlIG91ciAicmVjaXBlIiBmb3IgdGhlIGNob3J1cy4NCiMgSXQgZG9lcyBOT1QgcnVuIHVudGlsIHdlIGNhbGwgaXQgYnkgbmFtZS4NCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGVmIHNpbmdfY2hvcnVzKCk6DQogICAgcHJpbnQoIiAgIE9oLCBQeXRob24gaXMgdGhlIGNvZGUgZm9yIG1lLCIpDQogICAgcHJpbnQoIiAgIFdpdGggZnVuY3Rpb25zLCBjbGVhbiBhbmQgZnJlZS4iKQ0KICAgIHByaW50KCIgICBJJ2xsIGNhbGwgdGhpcyBjaG9ydXMgb25jZSBvciB0d2ljZSwiKQ0KICAgIHByaW50KCIgICAnQ2F1c2UgcmVwZWF0aW5nIGNvZGUgaXMgbm90IHNvIG5pY2UhIikNCiAgICBwcmludCgpICMgQWRkIGEgYmxhbmsgbGluZSBmb3Igc3BhY2luZw0KDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBTVEVQIDI6IENBTEwgdGhlIGZ1bmN0aW9uLg0KIyBOb3csIHdlIHdyaXRlIHRoZSBtYWluIHBhcnQgb2Ygb3VyIHByb2dyYW0uDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBQcmludCB0aGUgZmlyc3QgdmVyc2UNCnByaW50KCJWZXJzZSAxOiIpDQpwcmludCgiSSB3cm90ZSBzb21lIGNvZGUsIGl0IHdhcyB0ZW4gbGluZXMgbG9uZywiKQ0KcHJpbnQoIkkgY29weS1wYXN0ZWQsIGFuZCB0aGVuIGl0IHdhcyB3cm9uZy4iKQ0KcHJpbnQoKQ0KDQojIENhbGwgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgdGhlIGNob3J1cw0Kc2luZ19jaG9ydXMoKQ0KDQojIFByaW50IHRoZSBzZWNvbmQgdmVyc2UNCnByaW50KCJWZXJzZSAyOiIpDQpwcmludCgiSSBjaGFuZ2VkIGEgbGluZSwganVzdCBhIGxpdHRsZSBiaXQsIikNCnByaW50KCJCdXQgaGFkIHRvIGNoYW5nZSBpdCBpbiB0aHJlZSBwbGFjZXMsIHNvIEkgcXVpdC4iKQ0KcHJpbnQoKQ0KDQojIENhbGwgdGhlIGZ1bmN0aW9uIEFHQUlOLiBXZSBhcmUgcmV1c2luZyB0aGUgY29kZSENCnNpbmdfY2hvcnVzKCkNCiMgLS0tIENhbGwgdG8gQWN0aW9uIC0tLQ0KcHJpbnQoIlxuIiArICItIiAqIDQwKQ0KcHJpbnQoIvCfkqEgWU9VUiBUVVJOIFRPIEVYUEVSSU1FTlQhIikNCnByaW50KCIxLiBBZGQgYW5vdGhlciB2ZXJzZSAoVmVyc2UgMykgdG8gdGhlIHNvbmcuIikNCnByaW50KCIyLiBDYWxsIHRoZSBgc2luZ19jaG9ydXMoKWAgZnVuY3Rpb24gb25lIG1vcmUgdGltZSBhZnRlciB5b3VyIG5ldyB2ZXJzZS4iKQ0KcHJpbnQoIjMuIFRyeSBjaGFuZ2luZyBhIGxpbmUgaW5zaWRlIHRoZSBgc2luZ19jaG9ydXMoKWAgZnVuY3Rpb24uIE5vdGljZSBob3cgaXQiKQ0KcHJpbnQoIiAgIGNoYW5nZXMgdGhlIG91dHB1dCBpbiBCT1RIIHBsYWNlcyB5b3UgY2FsbGVkIGl0ISBUaGlzIGlzIHRoZSBwb3dlciBvZiBmdW5jdGlvbnMuIikNCnByaW50KCItIiAqIDQwKQ==" />
<!-- === KEY TAKEAWAY BOX === -->**</strong>

<Callout title="The Power of D.R.Y." type="info">
Programmers have a principle called **D.R.Y. - Don't Repeat Yourself.** If you find yourself writing the same lines of code more than once, it's a sign that you should probably put that code into a function. This makes your code shorter, easier to read, and much easier to update in the future.
</Callout>

Interactive Sandbox

Use this space to practice writing code and complete the "Your Turn" activities above.

Python 3Initializing...
Loading code editor...
Program output will appear here...