Functions QA
Functions QA
1. It makes program handling easier as only a small part of the program is dealt
with at a time, thereby avoiding ambiguity.
2. It reduces program size.
3. Functions make a program more readable and understandable to a
programmer thereby making program management much easier.
Question 2: What all information does a function header give you about the
function ?
Answer: Function header is the first line of function definition that begins with
keyword def and ends with a colon (:), specifies the name of the function and its
parameters.
Question 4: What are arguments ? What are parameters ? How are these two
terms different yet related ? Give example.
Answer: Arguments — The values being passed through a function-call statement
are called arguments.
Parameters — The values received in the function definition/header are called
parameters.
Arguments appear in function call statement whereas parameters appear in
function header. The two terms are related because the values passed through
arguments while calling a function are received by parameters in the function
definition.
For example :
Question 5: What is the utility of: (i) default arguments, (ii) keyword arguments ?
Answer: (i) Default arguments — Default arguments are useful in case a
matching argument is not passed in the function call statement. They give flexibility
to specify the 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 the arguments in the
function call.
(ii) Keyword arguments — Keyword arguments are useful when you want to
specify arguments by their parameter names during a function call. This allows us
to pass arguments in any order, as long as we specify the parameter names when
calling the function. It also makes the function call more readable and self-
explanatory.
Question 6: Explain with a code example the usage of default arguments and
keyword arguments.
Answer: Default arguments — Default arguments are used to provide a default
value to a function parameter if no argument is provided during the function call.
For example :
greet("Alice")
greet("Bob", "Hi there")
Output
Hello Alice
Hi there Bob
In this example, the message parameter has a default value of "Hello". If no
message argument is provided during the function call, the default value is used.
Keyword arguments — Keyword arguments allow us to specify arguments by
their parameter names during a function call, irrespective of their position.
Output
import math
num = 16
square_root = math.sqrt(num)
print("Square root of", num, ":", square_root)
Functions returning some value are Functions that does not return any value are called
called as fruitful functions. as non-fruitful functions.
They have return statements in the They may or may not have a return statement, but if
syntax : return<value>. they do, it typically appears as per syntax : return
Fruitful functions return some computed Non-fruitful functions return legal empty value of
result in terms of a value. Python, which is None, to their caller.
return
<value1/variable1/expression1>,<value2/variable2/expression2>
,....
2. The function call statement should receive or use the returned values in one of
the following ways :
Question 10: What is scope ? What is the scope resolving rule of Python ?
Answer: Scope refers to part(s) of program within which a name is legal and
accessible. When we access a variable from within a program or function, Python
follows name resolution rule, also known as LEGB rule. When Python encounters a
name (variable or function), it first searches the local scope (L), then the enclosing
scope (E), then the global scope (G), and finally the built-in scope (B).
Question 11: What is the difference between local and global variable ?
Answer:
A local variable is a variable defined within a A global variable is a variable defined in the
function. 'main' program.
They are only accessible within the block in They are accessible from anywhere within th
which they are defined. program, including inside functions.
These variables have local scope. These variables have global scope.
The lifetime of a local variable is limited to the Global variables persist throughout the entire
block of code in which it is defined. Once the execution of the program. They are created
execution exits that block, the local variable is when the program starts and are only
destroyed, and its memory is released. destroyed when the program terminates.
Question 12: When is global statement used ? Why is its use not recommended ?
Answer: If we want to assign some value to the global variable without creating
any local variable then global statement is used. It is not recommended because
once a variable is declared global in a function, we cannot undo the statement.
That is, after a global statement, the function will always refer to the global variable
and local variable cannot be created of the same name. Also, by using global
statement, programmers tend to lose control over variables and their scopes.
(c) Argument
Question 14: What do you understand by local and global scope of variables ?
How can you access a global variable inside the function, if function has a variable
with same name.
Answer: Local scope — Variables defined within a specific block of code, such as
a function or a loop, have local scope. They are only accessible within the block in
which they are defined.
Global scope — Variables defined outside of any specific block of code,
typically at the top level of a program or module, have global scope. They are
accessible from anywhere within the program, including inside functions.
To access a global variable inside a function, even if the function has a
variable with the same name, we can use the global keyword to declare that we
want to use the global variable instead of creating a new local variable. The syntax
is :
global<variable name>
For example:
def state1():
global tigers
tigers = 15
print(tigers)
tigers = 95
print(tigers)
state1()
print(tigers)
Question 1(a): What are the errors in following codes ? Correct the code and
predict output :
total = 0;
def sum(arg1, arg2):
total = arg1 + arg2;
print("Total :", total)
return total;
sum(10, 20);
print("Total :", total)
Answer
total = 0
def sum(arg1, arg2):
total = arg1 + arg2
print("Total :", total)
return total
sum(10, 20)
print("Total :", total)
Output
Total : 30
Total : 0
Explanation
Question 1(b): What are the errors in following codes ? Correct the code and
predict output :
def Tot(Number) #Method to find Total
Sum = 0
for C in Range (1, Number + 1):
Sum += C
RETURN Sum
print (Tot[3]) #Function Calls
print (Tot[6])
Answer:
Output
6
21
Explanation
1. There should be a colon (:) at the end of the function definition line to
indicate the start of the function block.
2. Python's built-in function for generating sequences is range(), not
Range().
3. Python keywords like return should be in lowercase.
4. When calling a function in python, the arguments passed to the function
should be enclosed inside parentheses () not square brackets [].
Question 2: Find and write the output of the following python code :
def Call(P = 40, Q = 20):
P = P + Q
Q = P - Q
print(P, '@', Q)
return P
R = 200
S = 100
R = Call(R, S)
print(R, '@', S)
S = Call(S)
print(R, '@', S)
Answer: Output
300 @ 200
300 @ 100
120 @ 100
300 @ 120
Explanation
1. Function Call is defined with two parameters P and Q with default values 40
and 20 respectively.
2. Inside the function Call, P is reassigned to the sum of its original value P and
the value of Q.
3. Q is reassigned to the difference between the new value of P and the original
value of Q.
4. Prints the current values of P and Q separated by @.
5. The function returns the final value of P.
6. Two variables R and S are initialized with values 200 and 100 respectively.
7. The function Call is called with arguments R and S, which are 200 and 100
respectively. Inside the function, P becomes 200 + 100 = 300
and Q becomes 300 - 100 = 200. So, 300 and 200 are printed. The function
returns 300, which is then assigned to R. Therefore, R becomes 300.
8. S = Call(S) — The function Call is called with only one argument S,
which is 100. Since the default value of Q is 20, P becomes 100 + 20 = 120,
and Q becomes 120 - 20 = 100. So, 120 and 100 are printed. The function
returns 120, which is then assigned to S. Therefore, S becomes 120.
Question 3: Consider the following code and write the flow of execution for this.
Line numbers have been given for your reference.
1 → 5 → 9 → 10 → 5 → 6 → 1 → 2 → 3 → 6 → 7 → 10 → 11
Answer: The function addEm will return None. The provided function addEm takes
three parameters x, y, and z, calculates their sum, and then prints the result.
However, it doesn't explicitly return any value. In python, when a function doesn't
have a return statement, it implicitly returns None. Therefore, the function addEm
will return None.
num = 1
def myfunc():
return num
print(num)
print(myfunc())
print(num)
Answer: Output
1
1
1
Explanation
The code initializes a global variable num with 1. myfunc just returns this global
variable. Hence, all the three print statements print 1.
num = 1
def myfunc():
num = 10
return num
print(num)
print(myfunc())
print(num)
Answer: Output
1
10
1
Explanation
1. num = 1 — This line assigns the value 1 to the global variable num.
2. def myfunc() — This line defines a function named myfunc.
3. print(num) — This line prints the value of the global variable num, which
is 1.
4. print(myfunc()) — This line calls the myfunc function.
Inside myfunc function, num = 10 defines a local variable num and assigns
it the value of 10 which is then returned by the function. It is important to
note that the value of global variable num is still 1 as num of myfunc is local
to it and different from global variable num.
5. print(num) — This line prints the value of the global variable num, which
is still 1.
num = 1
def myfunc():
global num
num = 10
return num
print(num)
print(myfunc())
print(num)
Answer: Output
1
10
10
Explanation
1. num = 1 — This line assigns the value 1 to the global variable num.
2. def myfunc() — This line defines a function named myfunc.
3. print(num) — This line prints the value of the global variable num, which
is 1.
4. print(myfunc()) — This line calls the myfunc function. Inside
the myfunc function, the value 10 is assigned to the global variable num.
Because of the global keyword used earlier, this assignment modifies the
value of the global variable num to 10. The function then returns 10.
5. print(num) — This line prints the value of the global variable num again,
which is still 1.
def display():
print("Hello", end='')
display()
print("there!")
Answer: Output
Hellothere!
Explanation: The function display prints "Hello" without a newline due to the end=''
parameter. When called, it prints "Hello". Outside the function, "there!" is printed on
the same line due to the absence of a newline.
a = 10
y = 5
def myfunc():
y = a
a = 2
print("y =", y, "a =", a)
print("a + y =", a + y)
return a + y
print("y =", y, "a =", a)
print(myfunc())
print("y =", y, "a =", a)
Explanation: In the provided code, the global variables a and y are initialized to 10
and 5, respectively. Inside the myfunc function, the line a = 2 suggests that a is
a local variable of myfunc. But the line before it, y = a is trying to assign the
value of local variable a to local variable y even before local variable a is defined.
Therefore, this code raises an UnboundLocalError.
Answer: In the above function definition, the line print("the answer is", x
+ y + z) is placed after the return statement. In python, once a return statement
is encountered, the function exits immediately, and any subsequent code in the
function is not executed. Therefore, the print statement will never be executed.
Question 9: Write a function namely fun that takes no parameters and always
returns None.
Answer:
def fun():
return
Explanation
def fun():
return
r = fun()
print(r)
The function fun() returns None. When called, its return value is assigned to r,
which holds None. Then print(r) outputs None.
Question 10: Consider the code below and answer the questions that follow :
Answer
5 times 5 = 25
(ii) After the code is executed, the variable output is equal to 25. This is because
the function multiply returns the result of multiplying 5 and 5, which is then
assigned to the variable output.
Question 11: Consider the code below and answer the questions that follow :
Answer
(i) When the code above is executed, it will not print anything because the print
statement after the return statement won't execute. Therefore, the function exits
immediately after encountering the return statement.
(ii) After the code is executed, the variable output is equal to 25. This is because
the function multiply returns the result of multiplying 5 and 5, which is then
assigned to the variable output.
define check()
N = input ('Enter N: ')
i = 3
answer = 1 + i ** 4 / N
Return answer
def check():
N = int(input('Enter N:'))
i = 3
answer = 1 + i ** 4 / N
return answer
print(alpha("Valentine's Day"):)
print(beta(string = 'true'))
print(alpha(n = 5, "Good-bye"):)
Question 13: Draw the entire environment, including all user-defined variables at
the time line 10 is being executed.
Answer: The environment when the line 10 is being executed is shown below:
1 → 6 → 9 → 12 → 1 → 2 → 3 → 4 → 6 → 7 → 9 → 10 → 12
a = 10
def call():
global a
a = 15
b = 20
print(a)
call()
Answer: Output
15
Explanation
Question 16: In the following code, which variables are in the same scope ?
def func1():
a = 1
b = 2
def func2():
c = 3
d = 4
e = 5
Answer: In the code, variables a and b are in the same scope because they are
defined within the same function func1(). Similarly, variables c and d are in the
same scope because they are defined within the same function func2(). e being
a global variable is not in the same scope.
Question 17: Write a program with a function that takes an integer and prints the
number that follows after it. Call the function with these arguments :
4, 6, 8, 2 + 1, 4 - 3 * 2, -3 -2
Answer
1. def print_number(number):
2. next_number = number + 1
3. print("The number following", number, "is",
next_number)
4. print_number(4)
5. print_number(6)
6. print_number(8)
7. print_number(2 + 1)
8. print_number(4 - 3 * 2)
9. print_number(- 3 - 2)
Output
Explanation
Question 18: Write a program with non-void version of above function and then
write flow of execution for both the programs.
1. def print_number(number):
2. next_number = number + 1
3. return next_number
4. print(print_number(4))
5. print(print_number(6))
6. print(print_number(8))
7. print(print_number(2 + 1))
8. print(print_number(4 - 3 * 2))
9. print(print_number(-3 - 2))
Output
5
7
9
4
-1
-4
Explanation
1→4→1→2→3→4→5→1→2→3→5→6→1→2→3→6→7→1
→2→3→7→8→1→2→3→8→9→1→2→3→9
1→4→1→2→3→4→5→1→2→3→5→6→1→2→3→6→7→1
→2→3→7→8→1→2→3→8→9→1→2→3→9
def increment(n):
n.append([4])
return n
L = [1, 2, 3]
M = increment(L)
print(L, M)
Answer: Output
Explanation: In the code, the function increment appends [4] to list n, modifying
it in place. When L = [1, 2, 3], calling increment(L) changes L to [1, 2, 3,
[4]]. Variable M receives the same modified list [1, 2, 3, [4]], representing L. Thus,
printing L and M results in [1, 2, 3, [4]], confirming they reference the same list.
Therefore, modifications made to list inside a function affect the original list passed
to the function.
def increment(n):
n.append([49])
return n[0], n[1], n[2], n[3]
L = [23, 35, 47]
m1, m2, m3, m4 = increment(L)
print(L)
print(m1, m2, m3, m4)
print(L[3] == m4)
Answer: Output
Explanation: The function increment appends [49] to list n and returns its first
four elements individually. When L = [23, 35, 47],
calling increment(L) modifies L to [23, 35, 47, [49]]. Variables m1, m2, m3,
and m4 are assigned the same list [23, 35, 47, [49]], representing the original list
L. Thus, printing L and m1, m2, m3, m4 yields [23, 35, 47, [49]]. The expression
L[3] == m4 evaluates to True, indicating that the fourth element of L is the same as
m4.
Question 20: What will be the output of the following Python code ?
V = 25
def Fun(Ch):
V = 50
print(V, end = Ch)
V *= 2
print(V, end = Ch)
print(V, end = "*")
Fun("!")
print(V)
1. 25*50!100!25
2. 50*100!100!100
3. 25*50!100!100
4. Error
Answer: 25*50!100!25
Explanation