What is a Function in Python?
A
Functions in Python are used to utilize the code in more than one place
in a program, sometimes also called method or procedures. Python
provides you many inbuilt functions like print(), but it also gives
freedom to create your own functions.
In this tutorial, we will learn
How to define and call a function in Python
Function in Python is defined by the
"def " statement followed by the function name and parentheses ( () )
Example:
Let us define a function by using the command " def func1():" and call the function. The output of the function will be
"I am learning Python function".
The function
print func1() calls our def func1(): and print the command "
I am learning Python function None."
There are set of rules in Python to define a function.
- Any args or input parameters should be placed within these parentheses
- The function first statement can be an optional statement- docstring or the documentation string of the function
- The code within every function starts with a colon (:) and should be indented (space)
- The
statement return (expression) exits a function, optionally passing back
a value to the caller. A return statement with no args is the same as
return None.
Significance of Indentation (Space) in Python
Before
we get familiarize with Python functions, it is important that we
understand the indentation rule to declare Python functions and these
rules are applicable to other elements of Python as well like declaring
conditions, loops or variable.
Python follows a particular style of indentation to define the code, since
Python
functions don't have any explicit begin or end like curly braces to
indicate the start and stop for the function, they have to rely on this
indentation. Here we take a simple example with "print"
command. When we write "print" function right below the def func 1 ():
It will show an "
indentation error: expected an indented block".
Now, when you add the indent (space) in front of "print" function, it should print as expected.
At
least, one indent is enough to make your code work successfully. But as
a best practice it is advisable to leave about 3-4 indent to call your
function.
It is also necessary that while declaring indentation, you have to
maintain the same indent for the rest of your code.
For example, in below screen shot when we call another statement "still
in func1" and when it is not declared right below the first print
statement it will show an indentation error
"unindent does not match any other indentation level."
Now, when we apply same indentation for both the statements and align them in the same line, it gives the expected output.
How Function Return Value?
Return command in Python specifies what value to give back to the caller of the function.
Let's understand this with the following example
Step 1)
Here - we see when function is not "return". For example, we want the
square of 4, and it should give answer "16" when the code is executed.
Which it gives when we simply use "print x*x" code, but when you call
function "print square" it gives "None" as an output. This is because
when you call the function, recursion does not happen and fall off the
end of the function. Python returns "None" for failing off the end of
the function.
Step 2) To make this clearer we replace the print command with assignment command. Let's check the output.
When
you run the command "print square (4)" it actually returns the value of
the object since we don't have any specific function to run over here
it returns "None".
Step 3) Now, here we will see
how to retrieve the output using "return" command. When you use the
"return" function and execute the code, it will give the output "16."
Step 4)
Functions in Python are themselves an object, and an object has some
value. We will here see how Python treats an object. When you run the
command "print square" it returns the value of the object. Since we have
not passed any argument, we don't have any specific function to run
over here it returns a default value (0x021B2D30) which is the location
of the object.
In practical Python program, you probably won't ever need to do this.
Arguments in Functions
The argument is a value that is passed to the function when it's called.
In other words on the calling side, it is an argument and on the function side it is a parameter.
Let see how Python Args works -
Step 1)
Arguments are declared in the function definition. While calling the
function, you can pass the values for that args as shown below
Step 2) To declare a default value of an argument, assign it a value at function definition.
Example:
x has no default values. Default values of y=0. When we supply only one
argument while calling multiply function, Python assigns the supplied
value to x while keeping the value of y=0. Hence the multiply of x*y=0
Step 3) This time we will change the value to y=2 instead of the default value y=0, and it will return the output as (4x2)=8.
Step 4) You
can also change the order in which the arguments can be passed in
Python. Here we have reversed the order of the value x and y to x=4 and
y=2.
Step 5)
Multiple Arguments can also be passed as an array. Here in the example
we call the multiple args (1,2,3,4,5) by calling the (*args) function.
Example:
We declared multiple args as number (1,2,3,4,5) when we call the
(*args) function; it prints out the output as (1,2,3,4,5)
Tips:
- In Python 2.7. function overloading
is not supported in Python. Function Overloading is the ability to
create multiple methods of the same name with a different
implementation. Function Overloading is fully supported in Python 3
- There
is quite a confusion between methods and functions. Methods in Python
are associated with object instances while function are not. When Python
calls a method, it binds the first parameter of that call to the
appropriate object reference. In simple words, a standalone function in
Python is a "function", whereas a function that is an attribute of a
class or an instance is a "method".
Here is the complete Python 3 code
#define a function
def func1():
print ("I am learning Python function")
print ("still in func1")
func1()
def square(x):
return x*x
print(square(4))
def multiply(x,y=0):
print("value of x=",x)
print("value of y=",y)
return x*y
print(multiply(y=2,x=4))
Here is the complete Python 2 code
#define a function
def func1():
print " I am learning Python function"
print " still in func1"
func1()
def square(x):
return x*x
print square(4)
def multiply(x,y=0):
print"value of x=",x
print"value of y=",y
return x*y
print multiply(y=2,x=4)
Summary:
Function in Python is a piece of reusable code that is used to perform single, related action. In this article, we will see
- Function defined by the def statement
- The code block within every function starts with a colon (:) and should be indented (space)
- Any arguments or input parameters should be placed within these parentheses, etc.
- At least one indent should be left before the code after declaring function
- Same indent style should be maintained throughout the code within def function
- For best practices three or four indents are considered best before the statement
- You can use the "return" command to return values to the function call.
- Python
will print a random value like (0x021B2D30) when the argument is not
supplied to the calling function. Example "print function."
- On the calling side, it is an argument and on the function side it is a parameter
- Default
value in argument - When we supply only one argument while calling
multiply function or any other function, Python assigns the other
argument by default
- Python enables you to reverse the order of the argument as wel