Function vs Method in Python
Published: 2023-05-15 04:40:31

Hi guys! Starting out in programming and learning python I often wondered about the key differences between functions and methods in Python. At first glance, they seemed interchangeable to me, but in reality, they serve different purposes and have different attributes.

---

## What is a _Function_ in Python?

A **function** is a block of reusable code that performs a specific task. It takes input arguments, processes them, and returns a value. **Functions** are designed to be reusable, which means that you can call them multiple times in a program. Here is an example of a simple function in Python:


```
def add_numbers(x, y):
    return x + y

result = add_numbers(3, 5)
print(result)
```

In this example, we define a **function** called `add_numbers` that takes two arguments `x` and `y`. It adds them together and returns the result. We then call the **function** with the values `3` and `5`, which results in `8` being stored in the `result` variable. Finally, we print the result.

---

## What is a _Method_ in Python?

A **method** is similar to a _function_ in that it performs a specific task, but it is associated with an _object_. In other words, a **method** is a _function_ that is called on a specific _object_. **Methods** are used to manipulate an object's state and behavior. Here is an example of a method in Python:

```
name = "Alice"
upper_name = name.upper()
print(upper_name)
```

In this example, we define a string variable called `name` with the value `Alice`. We then call the `upper()` **method** on the `name` _object_. This **method** returns a new string with all characters converted to uppercase. We store the result in a variable called `upper_name` and then print it. The output will be `"ALICE"`.

---

## How to Determine if a Line of Code is a _Method_ or a _Function_?

To determine whether a line of code is a **method** or a **function**, you need to look at the _object_ it is called on. If the line of code is called on an _object_, it is a **method**. If it is _not called on an object_, it is a **function**. In the examples above, the `add_numbers()` **function** is **not** associated with any _object_, while the `upper()` **method** is called on the `name` _object_.

A good way to understand the difference between a function and a method is to think of a recipe book. A function is like a recipe that you can use to bake a cake. It tells you what ingredients to use and how to mix them together to create a finished product. You can use the same recipe multiple times to make different cakes.

On the other hand, a method is like a step in a recipe that tells you how to mix the ingredients together. It is specific to the recipe you are using and is used to manipulate the ingredients to create the desired outcome. For example, if a recipe calls for you to mix the ingredients in a specific order or to whisk the eggs, these are methods.

---

Python is a powerful and versatile programming language that can be used for a wide variety of tasks. Whether you are interested in data science, web development, or just want to learn a new skill, Python is a great place to start.

By understanding the differences between functions and methods in Python, you can write more efficient and effective code. So if you're interested in learning Python, I encourage you to dive in and start exploring this amazing language!