FUNCTIONS - Python Programming Made Easy (2016)

Python Programming Made Easy (2016)

Chapter 3: FUNCTIONS

Functions are the most important building blocks in any programming language, especially Python. A function is a block of statements that perform a computation. The lines of code inside a function are executed sequentially.

Fig 3.1: Functions

Built-in functions

Built-in functions are the functions that are built into Python and can be accessed by a programmer.

Table 3.1: Python built-in functions

Some important functions are explained below

S.No

Function

Description

Example

1

abs(x)

Return the absolute value of a number. The argument may be a plain or long integer or a floating point number. If the argument is a complex number, its magnitude is returned.

abs(-4.0)

4.0

2

cmp(x,y)

Compare the two objects x and y and return an integer according to the outcome. The return value is negative if x < y, zero if x == y and strictly positive if x > y.

cmp(6,7)

-1

3

divmod(a, b)

Take two (non complex) numbers as arguments and return a pair of numbers consisting of their quotient and remainder when using long division.

divmod(8,8)

(2,2)

4

len(s)

Return the length (the number of items) of an object. The argument may be a sequence (string, tuple or list) or a mapping (dictionary).

len(“Python”)

6

5

max(arg1, arg2, *args[, key])

Return the largest item in an iterable or the largest of two or more arguments.

The optional key argument specifies a one-argument ordering function like that used for list.sort(). The key argument, if supplied, must be in keyword form (for example, max(a,b,c,key=func)).

max( 8, 56, 34)

56

max( "India","China","Japan")

'Japan'

6

min(arg1, arg2, *args[, key])

Return the smallest item in an iterable or the smallest of two or more arguments.

The optional key argument specifies a one-argument ordering function like that used for list.sort(). The key argument, if supplied, must be in keyword form (for example, min(a,b,c,key=func)).

min(8,56,34)

8

min('India','China','Japan')

'China'

7

range(stop)

range(start, stop[, step])

This is a versatile function to create lists containing arithmetic progressions. It is most often used in for loops. The arguments must be plain integers.

If the step argument is omitted, it defaults to 1.

If the start argument is omitted, it defaults to 0. step must not be zero (or else ValueError is raised).

for i in range(0,20,2):

print i,

0 2 4 6 8 10 12 14 16 18

8

round(number[, ndigits])

Return the floating point value number rounded to ndigits digits after the decimal point. If ndigits is omitted, it defaults to zero.

round(0.5)

1.0

round(-2.2)

-2.0

round(3.14127,2)

3.14

9

type(object)

type(name, bases, dict)

With one argument, return the type of an object. The return value is a type object.The isinstance() built-in function is recommended for testing the type of an object.

str ="Python"

type(str)

<type 'str'>

a = 5

type(a)

<type 'int'>

10

tuple([iterable])

Return a tuple whose items are the same and in the same order as iterable‘s items.

tuple([1,2,3,4,5])

(1, 2, 3, 4, 5)

11

id(object)

Return the “identity” of an object. This is an integer (or long integer) which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same id() value.

a = 5

id(a)

30991416L

Table 3.2: Important built-in functions

* Data type conversion functions have been already discussed in chapter 2

Modules

A module is a file containing Python definitions and statements. We need to import modules to use any of its functions or variables in our code.

Syntax:

import modulename1 [,modulename2,…]

Example:

import math

value=math.sqrt(25)

Syntax:

From modulename import functionname [,functionname]

Example:

from math import sqrt

value=sqrt(25)

Note: It’s a good programming practice to put all the import statements at the beginning of the Python file.

Some important modules are math, random, string, time, date.

Math module

Some important functions in math module are listed in the table below

Function

Description

Example

ceil(x)

Return the smallest integer value greater than or equal to x.

import math

math.ceil(40.3)

41.0

floor(x)

Return the largest integer value less than or equal to x.

math.floor(39.9)

39.0

exp(x)

Returns ex

math.exp(1)

2.718281828459045

pow(x, y)

Returns xy

math.pow(8,3)

512.0

sqrt(x)

Return the square root of x.

math.sqrt(25)

5.0

hypot(x, y)

Return the Euclidean norm, sqrt(x*x + y*y). This is the length of the vector from the origin to point (x, y).

math.hypot(6,6)

8.48528137423857

degrees(x)

Converts angle x from radians to degrees.

math.degrees(3.14)

179.9087476710785

radians(x)

Converts angle x from degrees to radians.

math.radians(180)

3.141592653589793

cos(x)

Return the cosine of x.

math.cos(0)

1.0

sin(x)

Return the sine of x.

math.sin(0)

0.0

tan(x)

Return the tangent of x.

math.tan(0)

0.0

pi

The mathematical constant pi.

math.pi

3.141592653589793

e

The mathematical constant e

math.e

2.718281828459045

Table 3.3: Math module

Random module

Some important functions in random module are listed in the table below

Function

Description

Example

random.randrange(stop)

random.randrange(start, stop[, step])

Return a randomly selected element from range (start, stop, and step).

print random.randrange(2,10)

8

print random.randrange(2,10)

4

random.randint(a, b)

Return a random integer N such that a <= N <= b.

print random.randint(8,20)

19

random.seed([x])

Initialize the basic random number generator. Optional argument x can be any hashable object. If x is omitted or None, current system time is used;

random.seed(5)

print random.randint(0,10)

6

print random.randint(0,10)

8

random.choice(seq)

Return a random element from the non-empty sequence seq. If seq is empty, raises IndexError.

print random.choice("Python")

o

Table 3.4: random module

String module is discussed in Chapter 5

User –defined functions

Python provides many built in functions. But we can also create our own functions. These functions are called user-defined functions. There are a few rules for defining our own functions.

1. Function blocks begin with the keyword “def” followed by the function name and parantheses.

2. The first statement of a function can be an optional statement – docstring. It is the documentation string of the function which contains essential information about the function such as

à purpose of a function

àtypes of parameters

à return values

3. Any input parameters should be placed within these parameters.

4. The statement return [expression] exits a function, optionally passing back an expression to the caller. A return statement with no arguments is the same as return None.

5. By default, parameters have a positional behaviour, and we need to inform them in the same order as they were defined.

Example 3.1: Function to add 2 numbers

def add(a,b):

''' This functions adds 2 numbers'''

c = a+b

return c

Parameters and Arguments

Parameters are the values provided in the parenthesis in the function header when we define the function. Arguments are the values provided in function call/ invoke statement.

Fig 3.2: Function arguments/parameters

Fig 3.3: Types of parameters

Required arguments are the arguments passed to a function in correct positional order. Some functions require the arguments to be provided for all the parameters and order of arguments should be the same as in the definition.

Default arguments assume a default value if a value is not provided in the function call for that argument. A parameter having a default value in function header becomes optional in function call. Function call may or may not have value for it. They are used

è To add new parameters to the existing function

è To combine similar functions

è To provide greater flexibility to programmers

Keyword arguments allows us to skip arguments or place them out of order because the interpreter is able to use the keywords provided to match the values with parameters. The calling function identifies the arguments by the parameter name. This is a unique feature of Python where we can write any argument in any order provided we name the arguments. We can pass a dictionary as an argument.

The code snippet below explains it.

def func(a='aa', b='bb', c='cc’, **keyargs):

... print a, b, c

...

>>> func()

aa bb cc

>> func(**{'a' : 'x', 'b':'y', 'c':'z'})

x y z

>>>

Here, the order of parameter does not matter.

Advantages:

1. We need not remember the order of the arguments

2. We can specify values to only those parameters we want to

Variable-length arguments are not named in the function definition.

Example 3.2: Variable-length arguments

def add(*numbers):

sum =0

for number in numbers:

sum = sum + number

print sum

add(1,2,3,4,5)

add(2,4,6)

This allows us to add any number of values.

Anonymous functions

Functions using the lamda keyword without using “def” keyword are called anonymous functions.

Example 3.3: Anonymous functions

sum = lamda a,b:a+b

print sum(5,10)

Lamda forms can take any number of arguments but return just one value in the form of an expression.

Scope of variables

The scope of a variable determines the portion of the program where we can access a particular variable.

Global scope: A variable with global scope can be used anywhere in the program and it is declared outside all functions/blocks.

Local scope: When a variable is created inside the function/block, the variable becomes local to it.

Example 3.4: Scope

x=10 # global variable

def printx():

y=5 # local variable

print x+y

print x

printx()

print y # NameError: name 'y' is not defined

Composition

The act of joining 2 or more functions together is called composition.

Example 3.5

print math.degrees(math.pi)

180.0

Solved Questions

1. Define a function getLargest(x,y) to take in 2 numbers and return the larger of them.

Ans:

def getLargest(x,y):

if x>y:

return x

else:

return y

2. Write a python program to simulate a basic calculator using functions for add, subtract, multiply and divide.

Ans:

def add(x,y):

return (x+y)

def sub(x,y):

return (x-y)

def mul(x,y):

return (x*y)

def div(x,y):

return (x/y)

#calculator program

loop = 1

#this variable holds the user's choice in the menu:

choice = 0

while loop == 1:

# MENU

print " Four function calculator - choose your option:"

print "1) Addition",

print "2) Subtraction",

print "3) Multiplication",

print "4) Division",

print "5) Quit"

choice = input("Choose your option: ")

if choice == 1:

add1 = input(" First number: ")

add2 = input(" Second Number: ")

print add1, "+", add2, "=", add(add1,add2)

elif choice == 2:

sub1 = input("First number: ")

sub2 = input("Second Number: ")

print sub1, "-", sub2, "=", sub(sub,sub2)

elif choice == 3:

mul1 = input("First number: ")

mul2 = input("Second Number: ")

print mul1, "*", mul2, "=", mul(mul1,mul2)

elif choice == 4:

div1 = input("First number: ")

div2 = input("Second Number: ")

print div1, "/", div2, "=", div(div1,div2)

elif choice == 5:

loop = 0

print "Done !!"

Practice problems

1. Define a function ‘SubtractNumber(x,y)’ which takes in two numbers and returns the difference of the two.

2. Write a function in python to calculate the power of a given number. If user doesn’t specify the exponent it should return the square of the number.