Tuesday, 6 December 2016

Python Function - Definition, Call, Arguments and Parameters

Python Function - In our recent articles, we have discussed on loop statements - for-else loop and while-else loop. In this article, we will be learning about what functions are, how we can create our own function and how we can use it.


Functions in any programming language is a group of statements, identified by a name, that perform a specific task. Whenever we want to re-use these statements in the code, instead of writing them all every time, we can invoke them using the name specified. This will not only save our copy-paste efforts but also reduce the code redundancy in the program. Also, for any correction to be made to any statement in the group, one need not correct every occurrence of it. Instead, it would be sufficient to make appropriate corrections in the defined function. Things will be clear when we go through some examples of functions. But to start with, lets learn how functions are created or defined.

Function definition

To define a function, Python has a keyword def, which gives us a function type or an object of class function. Please have a look at the basic syntax first, then we will try to unfold everything.

def function_name():
    # Block of code starts
    # Block of code ends

In the syntax above, the line starting with def is often called as function header and it consists of the keyword def, the name of the function and a pair of parenthesis. In the parenthesis, we can mention zero or more parameters, which we will discuss about later. After that, we have an indented block of statements, which we can call as 'function body', that will be executed at every run of the function. So, if we were to define our own function myFirstFunction which does nothing, we can have a pass statement in the function body as shown below:

>>> def myFirstFunction() :
... pass

Congrats, you've just created your first Python function. Had we replaced the pass statement with print 'Hello World', it would have printed Hello World on the screen. Shall we check the what type object a Python function is? We require a Python built-in function for this, which is dir() function.

>>> type(myFirstFunction)
<type 'function'>

As I said earlier, the resultant object is of function type. Now, we have created a function, but how to use it? Lets see this in following section.

Function Call

A function call is nothing but making use of the function you have created. Well, to do this, you just need to mention the function name followed by a pair of parenthesis. Remember, with the def keyword, you just created a function. Unless you create a function, you cannot call it. So, the function definition must come before the function call or you will face an error message. Lets try defining a function myFunction, that prints Congrats! You have just executed a function, and calling it.

>>> def myFunction() :
...    print "Congrats! You have just executed a function"

>>> myFunction()
Congrats! You have just executed a function

As mentioned above, in order to call a function, we just mentioned it's name followed by the parenthesis and we have the function executed. Next, we need to know about two important terms related to Python functions, which I might have mentioned earlier, but have to be understood in detail - Function Argument and Function Parameter

Function Argument and Function Parameter

We have already used some functions like dir() and len() in our previous articles, in which dir and len are the function names. We have used them to get a list of attributes and methods associated with the object and to find length of the object respectively. So, in order to get the attribute list of a list myList, we would use dir(myList) or to find its length, we would use len(myList), where we call myList as an Argument to dir() and len() functions. With an argument, we send some information, in the form of variable or a value, to a function. On the other hand, function receives these values using another variable, declared in the function header, which is called as a Parameter.

To understand this, lets take an example of any Python built-in function, say dir() function. The built-in functions are defined somewhere in the Python library and they must be defined in somewhat similar syntax as seen earlier. So, the dir() function might look like :

def dir( param ) :

Thus, the variable param is the parameter of the function. When we actually use the function as dir(myList), by providing an argument myList to that function, the function reads the value stored in the variable myList and assigns it to the variable param. After some processing on it, we finally get appropriate output. Take a look at below examples.

Example 1 : Table of a number

>>> def table(myNum) :
...     print '1 * ' + str(myNum) + ' = ' + str(1 * myNum)
...     print '2 * ' + str(myNum) + ' = ' + str(2 * myNum)
...     print '3 * ' + str(myNum) + ' = ' + str(3 * myNum)
...     print '4 * ' + str(myNum) + ' = ' + str(4 * myNum)
...     print '5 * ' + str(myNum) + ' = ' + str(5 * myNum)
...     print '6 * ' + str(myNum) + ' = ' + str(6 * myNum)
...     print '7 * ' + str(myNum) + ' = ' + str(7 * myNum)
...     print '8 * ' + str(myNum) + ' = ' + str(8 * myNum)
...     print '9 * ' + str(myNum) + ' = ' + str(9 * myNum)
...     print '10 * ' + str(myNum) + ' = ' + str(10 * myNum)

>>> table(5)
1 * 5 = 5
2 * 5 = 10
3 * 5 = 15
4 * 5 = 20
5 * 5 = 25
6 * 5 = 30
7 * 5 = 35
8 * 5 = 40
9 * 5 = 45
10 * 5 = 50

In above example, we have created a function with name table which prints the table of a number provided as an argument. It uses the parameter myNum to store the number. After some operations on myNum, we print the result. We also checked calling it with number 5 as an argument and it prints the table of 5. Now, in order to print the table of 7, we need not write the statements again, just call the function as table(7) and you are done. Conclusion - Functions improve the re-usability of the code and reduces redundancy.

Example 2 : Power of a number

>>> def power(base, exp) :
...     print str(base) + ' to the power of ' + str(exp) + ' is ' + str(base ** exp)

>>> power(2, 3)
2 to the power of 3 is 8
>>> power(3, 4)
3 to the power of 4 is 81
>>> power(6, 3)
6 to the power of 3 is 216

In this examples, we have created a function with name power that has two parameters base to store the value of base and exp to store the value of exponent. This function will calculate the expth power of base and print it on the screen. While calling the function, we have mentioned two arguments every time and got appropriate results in the output.

In this way, we have come to an end of this discussion of this article. This article was intended to provide you very basic knowledge about functions, in which we studies to define a function and call a function. Meanwhile, we also learned about arguments and parameters and used them in our function definition and function call. Although, we are not finished with functions, I recommend you to practice on whatever we have studied and start writing some functions of yours. Please write your reviews and feedback in the comment section below. In the next article, we will cover scope of the variables. Till then, stay tuned. Thank you.

This article is originally published at www.codeninja.in - Python Function Basics


Post a Comment