In this guide, you will learn all you need to know about Python functions, and especially how to properly write and call functions in Python.
By the end of this guide, you will have learned about:
And more.
Without further ado, let us begin this guide with the basics: what actually are functions?
In the programming context, a function is a self-contained module of codes that can be used over and over again to accomplish a specific task.
Most functions take in data as their input, process it, and then return a result as their output. Once a function is created, it can be used over and over again by calling the function's name. Basically, the programmer can forget all the details of how the function was written.
Using functions allows programmers to focus on the bigger objective while breaking down a problem into smaller components, and they don't have to write the same code multiple times.
In modern programming, functions are almost always used, and most major programming languages include built-in functions.
There are three basic considerations when dealing with functions in programming:
There are three types of functions in Python:
Python also has its own built-in functions.
Format(value[, format_spec]) is an example of Python's built-in functions used to convert a value to a specific format as controlled by format_spec.
Help([object]) is another built-in Python function to access Python's built-in help system.
In Python, anonymous functions are functions that are defined without the def keyword, and hence, without a name.
Anonymous functions are instead defined using the lambda keyword, and so they are also often called lambda functions.
Or UDFs, are functions created and defined by users (programmers) to help them in their program. User-Defined Functions will be the main focus of this guide.
Python is an object-oriented programming language, and in Python, a method is a type of function that you can call on an object. Think of a method as a function to execute on this specific object.
Methods in Python have many similarities to functions, except for two main differences:
Therefore, to really understand Python methods and their differences with functions, we have to first learn about classes and objects in Python.
Classes and objects in Python
Being an object-oriented language, almost everything in Python is an object.
An object in Python or any programming language is technically a collection of data (called variables) and methods (which are functions) that are executed on that data.
A class, on the other hand, is an object constructor, and we can think of it as a sketch or a blueprint for a specific object.
Let's assume we are going to build a house as an object. We have a design blueprint containing all the details about the house's layout, floors, doors, window placements, etc. Based on this blueprint, we can build the house.
In this example, the house's blueprint is a class, and the house itself is an object.
Methods as functions within a class
Now that we've understood the roles of objects and classes in Python, we can properly understand methods.
To reiterate, a method in Python refers to a function when it is part of a class. Meaning, all Python methods are functions, but not all functions are methods.
In Python, methods can only be accessed with an object or instance of the class, while there's no such restriction with standalone functions.
Python also has a set of built-in methods that you can use off the bat.
In relation to Python functions, parameters are variables acting as placeholders for the actual values needed by the function. Typically parameters are listed inside the parentheses in a function's definition.
The term "argument" is often used interchangeably with "parameter," and basically, they refer to the same thing: placeholder of information that is passed into the function or method.
However, from the function's technical perspective, an argument is the value of the parameter (as a placeholder) that is passed into the function. The function (or the method) refers to the arguments by their parameter names, while arguments' values are defined by users.
For example, if there are two parameters defined: cost and restaurant-name, then $10 (for cost) and "El Bulli" are arguments that correspond to the parameters cost and restaurant-name.
Simply put, when defining a function, we also define the parameters. Then, when this function is called, you need to specify the value for the arguments for each parameter.
For example:
def subtractNum(num1, num2):
print(num1 - num2)
subtractNum(8, 4)
# Output: 4
In the above example:
As discussed, writing and calling User-Defined Functions (UDFs) will be the main focus of this guide, and there are basically four key steps to defining UDFs in Python:
For example, if you are going to define a function called Test with parameters number1 and number2 to display the sum of the two variables on screen, by following the four steps above, we can write:
def test(number1, number2):
return (number 1+number2)
Of course, in practice, the function would be much more complex and will get more complex as you continue writing the program.
The return keyword in Python functions
In the above function example, you can use the built-in function print, and in this case, you don't really need to return the function since there won't be any difference between using return or not using it.
def test(number1, number2):
print ("number 1+number2"
)
There won't be any difference in output between the function above (using return) and this function (with print.)
However, that's not saying the return keyword doesn't have its unique utility. If you want to continue the program using the result of your initial function and execute operations on this result, you'll need the return statement so the function will actually return a usable value (i.e., calculable integers.)
Another important thing regarding the return keyword is that you can use the return keyword to return multiple values by using tuples.
Tuples in Python are quite similar to standard lists, but you will not be able to modify the elements of a tuple once it's already assigned, unlike in standard lists where you can modify the elements.
More about parameters and arguments when defining functions
As discussed, you can pass argument(s) into a Python function by writing the parameters inside the parentheses following the defined function name.
The basic syntax for defining a function complete with parameters is as follows:
def functionName(par1, par2, par3)
Keep in mind that you can specify as many parameters and arguments as you'd like.
Different types of arguments
There are four different types of arguments that Python functions can take:
As the name suggests, default arguments will take a default value if no argument value is passed. You can assign this default value for each parameter when defining the function with the assignment operator (=,) for example:
def test(x,y = 2):
return x + y
# If no x argument value given, call `test()` with `x` parameter
test (x=1)
# If no a and b argument values given, call `test()` with `x` and `y' parameters
test(x=1, y=2)
This type of argument is identified by its parameter name, and you can use a keyword argument to make sure all parameters are called in a specific order.
Using the same example as the above:
def test(x,y = 2):
return x + y
# call `test()` with parameters
test (2,3)
# Call `test()` with keyword arguments
test(x=1, y=2)
Again, as the name suggests, the required arguments must be given value by their users during the function call, or else the function won't be executed properly.
Using the same example as the above:
def test(x,y = 2):
return x + y
you can use args inside the parentheses in case you don't know the exact argument value (or values) that you want to pass to the function:
# Define `test()` function to accept a variable number of arguments
def test(*args):
return sum(args)
# Calculate the sum
test(1,3,7)
As discussed, in Python, anonymous functions are also called lambda functions because they are defined using the lambda keyword rather than the usual def statement.
A lambda function in Python can be used wherever function objects are needed with the following syntax:
lambda arguments: expression
As you can see, anonymous functions only have one expression, but can have a number of arguments/parameters.
Here is a simple example of an anonymous Python function that adds 10 to an input value.
# Example of anonymous/lambda functions
test = lambda x: x + 10
print(test(7))
Output=17
In the above example, lambda x: x+10 is an anonymous function. X is the parameter/argument here, and x+10 is the expression that gets returned. As you can see, this function has no name (anonymous) but is assigned to the identifier test. We can call it just as we would a normal function by calling "test."
Thus, the statement:
test = lambda x: x + 10
is similar to this traditional function:
def test (x)
return x + 10
When to use the anonymous/lambda function in Python
We can use anonymous or lambda functions when we need a temporary function for just a short period of time, so we can use a nameless function.
In Python, we typically use anonymous functions as an argument to another function (a higher-order function that takes in other functions as arguments.) While built-in functions like print(), filter(), and others are more often used by the high-order functions, sometimes lambda functions are also used.
Once a function has been successfully defined, you can easily call the function by simply executing the function's name.
For example, to call a function named test(var1, var2), you can simply execute test(1,2), with 1 and 2 being your arguments for parameters var1 and var2.
Congrats! You've reached the end of this short guide on Python functions.
By following the tutorial above, now you already have a solid foundation regarding how to write and call functions in Python and how to effectively use functions in your Python programs.
If you need to learn more, 24HourAnswers.com has experienced Python tutors and more tutorials on Python and other programming languages, where you can learn and practice your knowledge more thoroughly.