Python Training : Functions , Variable scope, Lambda functions...

 

Defining a function

Example 1: Print multiplication table:

def table(a):
	b = 1
	while b <= 5:
		
		print ("%d * %d  = %d" %(a,b,b*a))
		b += 1
		
table (5)

Output:
5 * 1  = 5
5 * 2  = 10
5 * 3  = 15
5 * 4  = 20
5 * 5  = 25

Example 2: Return average of 3 numbers

def average (a,b,c):
	d = (a + b + c ) / 3
	return d
	
result = average (10,20,30)
print (result)

Output:
20.0

Variable scope

Local variables:

In the above program variables a,b,c and d are local variables of the function average. Scope of those variables are with in the function average , so if we try to use them outside the function it will throw an error.

def average (a,b,c):
	d = (a + b + c ) / 3
	return d
	

average (10,20,30)
print (d)

Output:
print (d)
NameError: name 'd' is not defined

Global variables:

Variables defined outside the function are treated as global variables, and will be available in all functions without global command

a = 10

def average (b,c):
	print ("a is",a)
	d = ( a + b + c ) / 3
	return d
	

print (average (20,30))

Output:
20.0


Note:If we assign value to a variable using “=” inside a function ,that variable will become a local variable (even if the same name is used in the global scope). 

a = 10

def average (b,c):
	a = 40
	d = ( a + b + c ) / 3
	print ("average is", d)
	print ("local variable ‘a’ is", a)
	
	

average (20,30)
print ("global variable ‘a’ is still", a)

Output:
average is 30.0
local variable 'a' is 40
global variable 'a' is still 10


Use global command to assign or modify the value of a global variable:

a = 10

def average (b,c):
	global a
	print ("variable 'a' inside function is ", a)
	d = ( a + b + c ) / 3
	print ("average is",d)
	a = 40 		 #this will change the value of 'a' locally and globaly
		

average (20,30)
print ("global variable 'a' is now", 

Output
variable 'a' inside function is  10
average is 20.0
global variable 'a' is now 40

Call by object Reference:

If a mutable argument is used, the modification done inside the function will be visible outside also

#in the below function, 'x' is pointing to the object 'a' . If we modify 'x' , that change will reflect in 'a' also

def add_to_list (x,y):
	x.append(y)   


a = []
add_to_list (a,10)
add_to_list (a,20)
add_to_list (a,30)

print (a)

Output:
[10, 20, 30]

#note that if we use "=" to assign some value in 'x', 'x' will become a local variable and it wont be pointing to 'a'

Keeping default value to arguments:

def average (a,b,c=30):
	
	print ((a+b+c)/3)
	
average (10,20)
average (10,20,60)

Output:
20.0
30.0

Keyword arguments

def repeat(string, count):
	
	a = 1
	while a < count:
		print (string)
		a +=1

repeat (count = 3, string = "python")

Output:
python
python
python

Passing variable number of arguments

def sum (a,b,*c):
	result = a + b
	for tmp in c:
		result += tmp
		
	print (result)

sum (10,20)
sum (10,20,30)
sum (10,20,30,40)

Output:
30
60
100


Lambda expressions / Lambda operator / Lambda function

Lambda functions are similar to a normal functions , but they doesn’t have a name. So they are also called as anonymous functions.

Lambda functions has arguments similar to normal functions and they can evaluate an expression with these arguments and return the result. 

Note: Only one expression is allowed with lambda functions.  

They are created using “lambda” keyword

>>> cube = lambda x : x ** 3
>>> cube (5)
125

>>> even = lambda x : True if x % 2 == 0 else False
>>> even(10)
True

>>> sum = lambda x,y : x + y
>>> sum (10,5)
15


Using lambda functions with filter(), map() , reduce()

Lambda functions will be useful whenever a function object is required. For example , builtin functions like filter(), map() and reduce() can make use of Lambda function as they require a function object as an argument. 


>>> a = [1,2,3,4,5]
>>> cube = lambda x : x ** 3
>>> print ( list (map (cube ,a) ) ) 
[1, 8, 27, 64, 125]
>>> 

>>> a = [1,2,3,4,5]
>>> even = lambda x : True if x % 2 == 0 else False
>>> print (list(filter (even,a)))
[2, 4]
>>> from functools import reduce
>>> a = [1,2,3,4,5]
>>> sum = lambda x,y : x + y
>>> reduce (sum,a)
15




Python Exercises


1. Create function to check whether given number is prime or not. Use this function with list of numbers to print only the prime numbers from a list.

2. Write a python program to find the factorial of a number using recursive function call

3.1 Create a function to find the smallest element of a given list

3.2 Create another function to return the position of a given element in a list

3.3 Create one more function to delete the element in a given position

3.4 Using the above three functions find, print and remove the smallest number in a list.
	Repeat this process till the list is empty to get numbers in sorted order.
	

Previous chapter: Python training : Dictionary, Dictionary methods and Two dimensional dictionary

CONTACT

Contact us and we'll get back to you within 24 hours.

Bangalore, India

Queries?
You can connect with us on Whatsapp 8884 884 844