Functions in Python
Functions in Python
FUNCTIONS
Introductio
n
◻ Large programs are often difficult to manage, thus
large programs are divided into smaller units known as
functions.
◻ It is simply a group of statements under any name i.e.
function name and can be invoked (call) from other
part of program.
◻ Take an example of School Management Software,
now this software will contain various tasks like
Registering student, Fee collection, Library book
issue, TC generation, Result Declaration etc. In this
case we have to create different functions for each task
to manage the software development.
-
Introductio
n
◻ Set of functions is stored in a file called MODULE.
And this approach is known as
MODULARIZATION, makes program easier to
understand, test and maintain.
◻ Commonly used modules that contain source code
for generic need are called LIBRARIES.
◻ Modules contains set of functions. Functions is of
mainly two types:
Built-in Functions
User-Defined Functions
S
Advantages of
Function
◻ PROGRAM HANDLING EASIER : only small part of
the program is dealt with at a time.
◻ REDUCED LoC: as with function the common set of
code is written only once and can be called from any
part of program, so it reduces Line of Code
◻ EASY UPDATING : if function is not used then set of
code is to be repeated everywhere it is required. Hence
if we want to change in any formula/expression then
we have to make changes to every place, if forgotten
then output will be not the desired output. With
function we have to make changes to only one
location.
S
User Defined
Functions
◻ A function is a set of statements that performs a
specific task; a common structuring elements that
allows you to use a piece of code repeatedly in
different part of program. Functions are also known as
sub-routine, methods, procedure or subprogram.
◻ Syntax to create USER DEFINED FUNCTION
def function_name([comma separated list of parameters]):
statements…
.
KEYWOR statements… FUNCTION
D DEFINITION
. S
Points to
remember…
◻ Keyword def marks the start of function header
◻ Function name must be unique and follows naming
rules same as for identifiers
◻ Function can take arguments. It is optional
◻ A colon(:) to mark the end of function header
◻ Function can contains one or more statement to
perform specific task
◻ An optional return statement to return a value from
the function.
◻ Function must be called/invoked to execute its code
S
User Defined function can
be….
1. Function with no arguments and no return
2. Function with arguments but no return
value
3. Function with arguments and return value
4. Function with no argument but return
value
S
Function with parameters but no return
value
S
Function with parameter and
return
◻ We can return values from function using
return keyword.
◻ The return value must be used at the calling
place by –
■ Either store it any variable
■ Use with print()
■ Use in any expression
S
Function with
return
S
Function with
return
NOTE: the return
statement ends a
function execution even if
it is in the middle of
function. Anything
written below return
statement will become
unreachable code.
def
max(x,y):
if x>y:
return
x
S
else:
print(“Iam not
return
Function not returning
value
◻ Function may or may not return a value. Non returning
function is also known as VOID function. It may or may not
contain return. If it contain return statement then it will be in
the form of:
[no value after return]
return
S
Parameters and Arguments in
Function
◻ Parameters are the value(s) provided in the parenthesis
when we write function header. These are the values
required by function to work
◻ If there are more than one parameter, it must be separated
by comma(,)
◻ An Argument is a value that is passed to the function when
it is called. In other words arguments are the value(s)
provided in function call/invoke statement
◻ Parameter is also known as FORMAL
ARGUMENTS/PARAMETERS ACTU
◻ Arguments is also known as
ARGUMENTS/PARAMETER AL
◻ Note: Function can alter only MUTABLE TYPE
values.
S
Example of Formal/Actual
Arguments
FORMAL
ARGUMENT
ACTUAL
ARGUMENT
S
Types of
Arguments
◻ There are 4 types of Actual Arguments allowed
in Python:
1. Positional arguments
2. Default arguments
3. Keyword arguments
4. Variable length arguments
S
Positional
arguments
◻ Are arguments passed to a function in
correct positional order
S
Default
arguments
S
Keyword(Named)
Arguments
◻ The default keyword gives flexibility to specify
default value for a parameter so that it can be
skipped in the function call, if needed. However,
still we cannot change the order of arguments in
function call i.e. you have to remember the order of
the arguments and pass the value accordingly.
◻ To get control and flexibility over the values sent
as arguments, python offers KEYWORD
ARGUMENTS.
◻ This allows to call function with arguments in any
order using name of the arguments.
S
Keyword(Named)
Argument
S
Rules for combining all three type of
arguments
◻ An argument list must first contain
positional arguments followed by
keyword arguments
◻ Keyword arguments should be taken from
the required arguments
◻ You cannot specify a value for an argument
more than once
S
Example of legal/illegal function
call
def
Average(n1,n2,n3=100):
return
FUNCTION CALL LEGAL/ REASON
(n1+n2+n3)/3 ILLEGA
L
Average(n1=20, n2=40,n3=80) LEGAL Non default values provided as
named arguments
Average(n3=10,n2=7,n1=100) LEGAL Keyword argument can be in
any order
Average(100,n2=10,n3=15) LEGAL Positional argument before
the keyword arguments
Average(n3=70,n1=90,100) ILLEGAL Keyword argument before the
positional arguments
Average(100,n1=23,n2=1) ILLEGAL Multiple values provided for n1
AveragVeIN(O20D I L LE G Undefined argument NUM2
O E F K AN
0 , n um 2 = 9 0 ,n A L
Returning Multiple
values
◻ Unlike other programming languages, python
lets you return more than one value from
function.
◻ The multiple return value must be either stored in
TUPLE or we can UNPACK the received value by
specifying the same number of variables on the
left of assignment of function call.
◻ Let us see an example of both :-
S
Multiple return value stored in
TUPLE
S
Multiple return value stored
by unpacking in multiple
variables
S
Compositio
n
◻ Refers to using an expression as a part of
large
expression, or a statement as a part large
of statement.
◻ Examples
Max((a+b),(c+a)) #
Prize(Card or Arithmetic
Cash) # Logical
name="Vikram“
print([Link]("m","nt").upper())
#function
S
Scope of Variables
◻ SCOPE means in which part(s) of the program,
a particular piece of code or data is accessible
or known.
◻ In Python there are broadly 2 kinds of Scopes:
Global Scope
Local Scope
S
Global Scope
◻ A name declared in top level segment( main ) of a
program is said to have global scope and can be
used in entire program.
◻ Variable defined outside all functions are global
variables.
S
Local
Scope
◻ A name declare in a function body is said to have
local scope i.e. it can be used only within this
function and the other block inside the function.
◻ The formal parameters are also having local scope.
◻ Let us understand with example….
S
Example – Local and Global
Scope
S
Example – Local and Global
Scope
„a‟ is not
accessible here
because it is
declared in
function area(), so
scope is local to
S area()
Example – Local and Global
Scope
S
Lifetime of
Variable
◻ Is the time for which a variable lives in memory.
For Global variables the lifetime is entire program
run
i.e. as long as program is executing. For Local
variables lifetime is their function‟s run i.e. as long
as function is executing.
S
Name Resolution (Scope
Resolution)
◻For every name used within program python follows name resolution
rules known as LEGB rule.
◻ (i) LOCAL : first check whether name is in local environment, if
yes Python uses its value otherwise moves to (ii)
◻ (ii) ENCLOSING ENVIRONMENT: if not in local, Python checks
whether name is in Enclosing Environment, if yes Python uses
its value otherwise moves to (iii)
◻ GLOBAL ENVIRONMENT: if not in above scope Python checks it
in Global environment, if yes Python uses it otherwise moves
to (iv)
◻ BUILT-IN ENVIRONMENT: if not in above scope, Python checks it
in built-in environment, if yes, Python uses its value otherwise
Python would report the error:
◻ name <variable> not defined
S
Predict the
output
Program with
variable “value”
in both LOCAL
and GLOBAL
SCOPE
S
Predict the
output
Program with
variable “value”
in both LOCAL
and GLOBAL
SCOPE
S
Predict the
output
Using GLOBAL
variable “value”
in local scope
S
Predict the
output
Using GLOBAL
variable “value”
in local scope
S
Predict the
output
Variable “value”
neither in local
nor global scope
S
Predict the
output
Variable “value”
neither in local
nor global scope
S
Predict the
output
Variable in Global
not in Local
(input in variable
at global scope)
S
Predict the
output
Variable in Global
not in Local
(input in variable
at global scope)
S
Mutability/Immutability of
Arguments/Parameters and
function call
S
Mutability/Immutability of
Arguments/Parameters and
function call
S
Mutability/Immutability of
Arguments/Parameters and
function call
◻ Python variables are not storage
containers, rather Python variables are like
memory references, they refer to memory address
where the value is stored, thus any change in
immutable type data will also change the
memory address. So any change to formal
argument will not reflect back to its
corresponding actual argument and in case of
mutable type, any change in mutable type will
not change the memory address of variable.
S
Mutability/Immutability of
Arguments/Parameters and
function call
S
Understanding of main() function in
Python
Most non-python
programmers are having the
habit of writing main()
function where the important
and starter code of programs
are written. In Python we
can also create main()
and call it by checking
name to
main and then call
any
S function, in this case
Recursio
nIt is one of the
◻ most powerful tool in programming
language. It is a process where function calls itself
again and again.
◻ Recursion basically divides the big problem into small
problems up to the point where it can be solved easily,
for example if we have to calculate factorial of a 5, we
will divide factorial of 5 as 5*factorial(4), then
4*factorial(3), then 3*factorial(2), then 2*factorial(1)
and now factorial of 1 can be easily solved without any
calculation, now each pending function will be
executed in reverse order.
S
Condition for Implementing
Recursion
◻It must contain BASE CONDITION i.e. at which point recursion will
end otherwise it will become infinite.
◻ BASE CONDITION is specified using „if‟ to specify
the termination
condition
◻ Execution in Recursion is in reverse order using STACK. It first divide
the large problem into smaller units and then starts solving from
bottom to top.
◻ It takes more memory as compare to LOOP statement because with
every recursion call memory space is allocated for local variables.
◻ The computer may run out of memory if recursion becomes infinite or
termination condition not specified.
◻ It is less efficient in terms of speed and execution time
◻ Suitable for complex data structure problems like TREE, GRAPH etc
S
Example -
Recursion
S
Example -
Recursion
S
Flow of execution in a function call
Function Definition :
def greet():
Statements
Function call:
greet()
When fn. Call statement is encountered an execution frame
for the called function is created.
A function body is also a block. A block is executed in an
execution frame.
Execution Frame contains:
Name of the function.
Values passed to a function.
Variables created within a function.
Information about the next instruction to be executed.
Creating & calling a Function(user
defined)
A function is defined using the def keyword
in python.E.g. program is given below.
def my_own_function():
#Function block/
print("Hello from a function") definition/creation
Libr- Libr-
ary1 ary2
Framework=multiple library
mod-
ule1
mod-
ule2
Library=multiple packages
Package=multiple module
Module=multiple function/class
Using Python Libraries
VARIAB IMPOR
LES T
CLASS
ES
MEMBE OTHER
RS PYTHON
METHODS MODUL
ES
Importing Python modules
◻ From the previous example, we can say that class X has its
own namespace where there no two names as POOJA
GUPTA; same holds for XI and XII.
Package –
◻ collection of python modules under a common
namespace.
◻ Have different modules on a single directory with
some special files(such as __init__.py (content is
empty))
◻ If you don’t have __init__.py inside then it is called as
folder and not as package.
Structure of a package
Package:
Package vs Folder
Procedure for creating packages
◻ Decide about the basic structure of your package
◻ ie. Should have a clear idea about package name (folders, sub folders,
modules etc.,)
◻ Use underscore as separators and not any other spl. Characters.
◻ Create the directory structure having folders with names
of package and sub packages.
◻ Create __init__.py files in package and sub package
folders.
◻ Associate it with python installation. (refer next slide)
◻ After copying your package folder in your current python
installation now it becomes library so that any one can
import its modules and use its functions
Creating Package
◻ Step 1
■ Create a new folder which you want to act as package. The
name of folder will be the name of your package
IN THE C:\USERS\VIN
A new Folder “mypackage”
is created.
Note: you can create folder in
any desired location
Creating Package
[Link]
Creating Package
VARIABL IMPO
ES
CLASSE RT
S
MEMBE OTHER
METHODS PYTHO
RS N
MODUL
ES
Importing Python
modules
◻ To import entire module
■ import <module name>
■ Example: import math
Output is less
than 1
random()
function
◻ To generate random number between given
range of values using random(), the
following format should be used:
Lower_range + random() *
(upper_range-lower_range)
For example to generate number between 10 to
50:
■ 10 + random() * (40)
randint()
function
◻ Another way to generate random number is
randint() function, but it generate integer numbers.
◻ Both the given range values are inclusive i.e. if we
generate random number as :
randint(20,70)
■ In above example random number between 20 to 70
will be taken. (including 20 and 70 also)
E
X
A
M
P
L
E
O
U
T
P
U
T
Just a
Minute…
◻ Give the following python code, which is
repeated four times. What could be the
possible set of output(s) out of four sets (ddd
is any combination of digits)
import random
print(15 + [Link]()*5)
a) b) c) d)
[Link] [Link] [Link] [Link]
[Link] [Link] [Link] [Link]
[Link] [Link] [Link] [Link]
[Link] [Link] [Link] [Link]
Just a
Minute…
◻ What could be the minimum possible and
maximum possible numbers by following
code
import random
print([Link](3,10)
-3)
◻ In a school fest, three randomly chosen
students out of 100 students (having roll
number 1 -100) have to present the bouquet
to the guests. Help the school authorities
Just a
Minute…
Just a
Look at the following Python code and find the possible output(s) from
Minute…
the options (i) to (iv) following it. Also, write the maximum and the
minimum values that can be assigned to the variable PICKER.
Note:
- Assume all the required header files are already being included in the
code.
-The function randint() generates an integer between
1 to n import random
PICKER=1+[Link](0,2)
COLOR=[”BLUE”,”PINK”,”GREEN”,”RED”]
for I in range(1,PICKER+1):
for j in range(I+1):
print(COLOR[j],end=‘’)
print()
What are the possible outcome(s)
executed from the following code?
Also specify the maximum and
minimum values that can be
assigned to variable PICK
1) 2)
DELHIDELHI DELHI
MUMBAIMUMBAI DELHIMUMBAI
CHENNAICHENNAI DELHIMUMBAICHENN
KOLKATAKOLKAT AI
A
3) 4)
DELHI DELHI
MUMBAI DELHIMUMBAI
CHENNAI KOLKATAKOLKATAKOLKA
TA
KOKLATA
randrange()
function
◻ This function is also used to generate
random number within given range.
◻ Syntax
randrange(start,stop,step)
It will generate
random number
between 5 to 14
Here, 10
occurs
most in the
list.