Python Interview Questions for Freshers
Python Interview Questions for Freshers
Output
[1, 2, 3, 4, 5, 6]
2. Using the extend() method:
This adds all the elements of the second list to the first list in-place.
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)
Output
[1, 2, 3, 4, 5, 6]
3. Difference between for loop and while loop in Python
For loop: Used when we know how many times to repeat, often with lists,
tuples, sets, or dictionaries.
While loop: Used when we only have an end condition and don’t know
exactly how many times it will repeat.
for i in range(5):
print(i)
c=0
while c < 5:
print(c)
c += 1
4. How do you floor a number in Python?
To floor a number in Python, you can use the math.floor() function, which
returns the largest integer less than or equal to the given number.
floor() method in Python returns the floor of x i.e., the largest integer not
greater than x.
Also, The method ceil(x) in Python returns a ceiling value of x i.e., the
smallest integer greater than or equal to x.
import math
n = 3.7
F_num = math.floor(n)
print(F_num)
Output
3
5. What is the difference between / and // in Python?
/ represents precise division (result is a floating point number) whereas //
represents floor division (result is an integer). For Example:
print(5//2)
print(5/2)
output :- 2
2.5
6. Is Indentation Required in Python?
Yes, indentation is required in Python. A Python interpreter can be informed that
a group of statements belongs to a specific block of code by using Python
indentation. Indentations make the code easy to read for developers in all
programming languages but in Python, it is very important to indent the code in
a specific order.
7. Can we Pass a function as an argument in Python?
Yes, Several arguments can be passed to a function, including objects, variables
(of the same or distinct data types) and functions. Functions can be passed as
parameters to other functions because they are objects. Higher-order functions
are functions that can take other functions as arguments.
def add(x, y):
return x + y
def apply_func(func, a, b):
return func(a, b)
print(apply_func(add, 3, 5))
The add function is passed as an argument to apply_func, which applies it to 3
and 5.
8. What is a dynamically typed language?
In a dynamically typed language, the data type of a variable is
determined at runtime, not at compile time.
No need to declare data types manually; Python automatically detects it
based on the assigned value.
Examples of dynamically typed languages: Python, JavaScript.
Examples of statically typed languages: C, C++, Java.
Dynamically typed languages are easier and faster to code.
Statically typed languages are usually faster to execute due to type
checking at compile time.
Example:
x = 10 # x is an integer
x = "Hello" # Now x is a string
Here, the type of x changes at runtime based on the assigned value hence it
shows dynamic nature of Python.
9. What is pass in Python?
The pass statement is a placeholder that does nothing.
It is used when a statement is syntactically required but no code needs to
run.
Commonly used when defining empty functions, classes or loops during
development.
def fun():
pass # Placeholder, no functionality yet
# Call the function
fun()
Here, fun() does nothing, but the code stays syntactically correct.
10. How are arguments passed by value or by reference in Python?
Python’s argument-passing model is neither “Pass by Value” nor “Pass by
Reference” but it is “Pass by Object Reference”.
Depending on the type of object you pass in the function, the function
behaves differently. Immutable objects show “pass by value” whereas
mutable objects show “pass by reference”.
You can check the difference between pass-by-value and pass-by-reference in
the example below:
11. What is a lambda function?
A lambda function is an anonymous function. This function can have any
number of parameters but, can have just one statement.
In the example, we defined a lambda function(upper) to convert a string to its
upper case using upper().
12. What is List Comprehension? Give an Example.
List comprehension is a way to create lists using a concise syntax. It allows us to
generate a new list by applying an expression to each item in an
existing iterable (such as a list or range). This helps us to write cleaner, more
readable code compared to traditional looping techniques.
For example, if we have a list of integers and want to create a new list
containing the square of each element, we can easily achieve this using list
comprehension.
13. What are *args and **kwargs?
*args: The special syntax *args in function definitions is used to pass a
variable number of arguments to a function. Python program to illustrate
*args for a variable number of arguments:
**kwargs: The special syntax **kwargs in function definitions is used to
pass a variable length argument list. We use the name kwargs with the
double star **.
14. What is a break, continue and pass in Python?
Break statement is used to terminate the loop or statement in which it is
present. After that, the control will pass to the statements that are present
after the break statement, if available.
Continue is also a loop control statement just like the break statement.
continue statement is opposite to that of the break statement, instead of
terminating the loop, it forces to execute the next iteration of the loop.
Pass means performing no operation or in other words, it is a placeholder
in the compound statement, where there should be a blank left and
nothing has to be written there.
15. What is the difference between a Set and Dictionary?
A Python Set is an unordered collection data type that is iterable, mutable
and has no duplicate elements. Python’s set class represents the
mathematical notion of a set.
Syntax: Defined using curly braces {} or the set() function.
my_set = {1, 2, 3}
Dictionary in Python is an ordered (since Py 3.7) [unordered (Py 3.6 &
prior)] collection of data values, used to store data values like a map,
which, unlike other Data Types that hold only a single value as an element,
Dictionary holds key:value pair. Key-value is provided in the dictionary to
make it more optimized.
Syntax: Defined using curly braces {} with key-value pairs.
my_dict = {“a”: 1, “b”: 2, “c”: 3}
16. What are Built-in data types in Python?
The following are the standard or built-in data types in Python:
Numeric: The numeric data type in Python represents the data that has a
numeric value. A numeric value can be an integer, a floating number, a
Boolean, or even a complex number.
Sequence Type: The sequence Data Type in Python is the ordered
collection of similar or different data types. There are several sequence
types in Python:
o Python String
o Python List
o Python Tuple
o Python range
Mapping Types: In Python, hashable data can be mapped to random
objects using a mapping object. There is currently only one common
mapping type, the dictionary and mapping objects are mutable.
o Python Dictionary
Set Types: In Python, a Set is an unordered collection of data types that is
iterable, mutable and has no duplicate elements. The order of elements in
a set is undefined though it may consist of various elements.
17. What is the difference between a Mutable datatype and an Immutable
data type?
Mutable data types can be edited i.e., they can change at runtime. Eg –
List, Dictionary, etc.
Immutable data types can not be edited i.e., they can not change at
runtime. Eg – String, Tuple, etc.
18. What is a Variable Scope in Python?
The location where we can find a variable and also access it if required is called
the scope of a variable.
Python Local variable: Local variables are those that are initialized within a
function and are unique to that function. A local variable cannot be
accessed outside of the function.
Python Global variables: Global variables are the ones that are defined
and declared outside any function and are not specified to any function.
Module-level scope: It refers to the global objects of the current module
accessible in the program.
Outermost scope: It refers to any built-in names that the program can call.
The name referenced is located last among the objects in this scope.
19. How is a dictionary different from a list?
A list is an ordered collection of items accessed by their index, while a dictionary
is an unordered collection of key-value pairs accessed using unique keys. Lists
are ideal for sequential data, whereas dictionaries are better for associative
data. For example, a list can store [10, 20, 30], whereas a dictionary can store
{“a”: 10, “b”: 20, “c”: 30}.
20. What is docstring in Python?
Python documentation strings (or docstrings) provide a convenient way of
associating documentation with Python modules, functions, classes and
methods.
Declaring Docstrings: The docstrings are declared using ”’triple single
quotes”’ or “””triple double quotes””” just below the class, method, or
function declaration. All functions should have a docstring.
Accessing Docstrings: The docstrings can be accessed using the __doc__
method of the object or using the help function.
21. How is Exceptional handling done in Python?
There are 3 main keywords i.e. try, except and finally which are used to catch
exceptions:
try: A block of code that is monitored for errors.
except: Executes when an error occurs in the try block.
finally: Executes after the try and except blocks, regardless of whether an
error occurred. It’s used for cleanup tasks.
Example: Trying to divide a number by zero will cause an exception.
1
n = 10
2
try:
3
res = n / 0 # This will raise a ZeroDivisionError
4
5
except ZeroDivisionError:
6
print("Can't be divided by zero!")
Output
Can't be divided by zero!
Explanation: In this example, dividing number by 0 raises a ZeroDivisionError.
The try block contains the code that might cause an exception and the except
block handles the exception, printing an error message instead of stopping the
program.
1/3
22. What is the difference between Python Arrays and Lists?
Arrays (when talking about the array module in Python) are specifically
used to store a collection of numeric elements that are all of the same
type. This makes them more efficient for storing large amounts of data and
performing numerical computations where the type consistency is
maintained.
Syntax: Need to import the array module to use arrays.
Example:
1
from array import array
2
arr = array('i', [1, 2, 3, 4]) # Array of integers
Lists are more flexible than arrays in that they can hold elements of
different types (integers, strings, objects, etc.). They come built-in with
Python and do not require importing any additional modules.
Lists support a variety of operations that can modify the list.
Example:
1
a = [1, 'hello', 3.14, [1, 2, 3]]
read more about Difference between List and Array in Python
23. What are Modules and Packages in Python?
A module is a single file that contains Python code (functions, variables, classes)
which can be reused in other programs. You can think of it as a code library. For
example: math is a built-in module that provides math functions like sqrt(), pi,
etc.
1
import math
2
print(math.sqrt(16))
package is a collection of related modules stored in a directory. It helps in
organizing and grouping modules together for easier management. For example:
The numpy package contains multiple modules for numerical operations.
To create a package, the directory must contain a special file named __init__.py.
Intermediate Python Interview Questions
24. What is the difference between xrange and range functions?
range() and xrange() are two functions that could be used to iterate a certain
number of times in for loops in Python.
In Python 3, there is no xrange, but the range function behaves like xrange.
In Python 2
o range() – This returns a range object, which is an immutable
sequence type that generates the numbers on demand.
o xrange() – This function returns the generator object that can be
used to display numbers only by looping. The only particular range is
displayed on demand and hence called lazy evaluation.
25. What is Dictionary Comprehension? Give an Example
Dictionary Comprehension is a syntax construction to ease the creation of a
26. Is Tuple Comprehension possible in Python? If yes, how and if not why?
Tuple comprehensions are not directly supported, Python’s existing features like
generator expressions and the tuple() function provide flexible alternatives for
creating tuples from iterable data.
(i for i in (1, 2, 3))
Tuple comprehension is not possible in Python because it will end up in a
generator, not a tuple comprehension.
27. Differentiate between List and Tuple?
Let’s analyze the differences between List and Tuple:
List
Lists are Mutable datatype.
Lists consume more memory
The list is better for performing operations, such as insertion and deletion.
The implication of iterations is Time-consuming
Tuple
Tuples are Immutable datatype.
Tuple consumes less memory as compared to the list
A Tuple data type is appropriate for accessing the elements
The implication of iterations is comparatively Faster
28. What is the difference between a shallow copy and a deep copy?
Below is the tabular Difference between the Shallow Copy and Deep Copy:
Shallow Copy reflects changes made Deep copy doesn’t reflect changes
to the new/copied object in the made to the new/copied object in the
original object. original object.
Shallow Copy stores the copy of the Deep copy stores the copy of the
original object and points the original object and recursively copies
references to the objects. the objects as well.
29. Which sorting technique is used by sort() and sorted() functions of python?
Python uses the Tim Sort algorithm for sorting. It’s a stable sorting whose worst
case is O(N log N). It’s a hybrid sorting algorithm, derived from merge sort and
insertion sort, designed to perform well on many kinds of real-world data.
30. What are Decorators?
Decorators are a powerful and flexible way to modify or extend the behavior of
functions or methods, without changing their actual code. A decorator is
essentially a function that takes another function as an argument and returns a
new function with enhanced functionality.
Decorators are often used in scenarios such as logging, authentication and
memorization, allowing us to add additional functionality to existing functions or
methods in a clean, reusable way.
31. How do you debug a Python program?
1. Using pdb (Python Debugger):
pdb is a built-in module that allows you to set breakpoints and step through the
code line by line. You can start the debugger by adding import pdb;
pdb.set_trace() in your code where you want to begin debugging.
2. Using logging Module:
For more advanced debugging, the logging module provides a flexible way to log
messages with different severity levels (INFO, DEBUG, WARNING, ERROR,
CRITICAL).
32. What are Iterators in Python?
In Python, iterators are used to iterate a group of elements, containers like a list.
Iterators are collections of items and they can be a list, tuples, or a dictionary.
Python iterator implements __itr__ and the next() method to iterate the stored
elements. We generally use loops to iterate over the collections (list, tuple) in
Python.
33. What are Generators in Python?
In Python, the generator is a way that specifies how to implement iterators. It is
a normal function except that it yields expression in the function. It does not
implement __itr__ and __next__ method and reduces other overheads as well.
If a function contains at least a yield statement, it becomes a generator. The
yield keyword pauses the current execution by saving its states and then
resumes from the same when required.
34. Does Python supports multiple Inheritance?
When a class is derived from more than one base class it is called multiple
Inheritance. The derived class inherits all the features of the base case.
Multiple Inheritance
Python does support multiple inheritances, unlike Java.
35. What is Polymorphism in Python?
Polymorphism means the ability to take multiple forms. Polymorphism allows
different classes to be treated as if they are instances of the same class through
a common interface. This means that a method in a parent class can be
overridden by a method with the same name in a child class, but the child class
can provide its own specific implementation. This allows the same method to
operate differently depending on the object that invokes it. Polymorphism is
about overriding, not overloading; it enables methods to operate on objects of
different classes, which can have their own attributes and methods, providing
flexibility and reusability in the code.
36. Define encapsulation in Python?
Encapsulation is the process of hiding the internal state of an object and
requiring all interactions to be performed through an object’s methods. This
approach:
Provides better control over data.
Prevents accidental modification of data.
Promotes modular programming.
Python achieves encapsulation through public, protected and private attributes.
Encapsulation in Python
37. How do you do data abstraction in Python?
Data Abstraction is providing only the required details and hides the
implementation from the world. The focus is on exposing only the essential
features and hiding the complex implementation behind an interface. It can be
achieved in Python by using interfaces and abstract classes.
38. How is memory management done in Python?
Python uses its private heap space to manage the memory. Basically, all the
objects and data structures are stored in the private heap space. Even the
programmer can not access this private space as the interpreter takes care of
this space. Python also has an inbuilt garbage collector, which recycles all the
unused memory and frees the memory and makes it available to the heap
space.
39. How to delete a file using Python?
We can delete a file using Python by following approaches:
1. Python Delete File using os. remove
2. Delete file in Python using the send2trash module
3. Python Delete File using os.rmdir
40. What is slicing in Python?
Python Slicing is a string operation for extracting a part of the string, or some
part of a list. With this operator, one can specify where to start the slicing,
where to end and specify the step. List slicing returns a new list from the existing
list.
Syntax:
substring = s[start : end : step]
41. What is a namespace in Python?
A namespace in Python refers to a container where names (variables, functions,
objects) are mapped to objects. In simple terms, a namespace is a space where
names are defined and stored and it helps avoid naming conflicts by ensuring
that names are unique within a given scope.
Types of namespaces
Types of Namespaces:
1. Built-in Namespace: Contains all the built-in functions and exceptions,
like print(), int(), etc. These are available in every Python program.
2. Global Namespace: Contains names from all the objects, functions and
variables in the program at the top level.
3. Local Namespace: Refers to names inside a function or method. Each
function call creates a new local namespace.
Python Interview
Advanced Python Interview Questions & Answers
42. What is PIP?
PIP is an acronym for Python Installer Package which provides a seamless
interface to install various Python modules. It is a command-line tool that can
search for packages over the internet and install them without any user
interaction.
43. What is a zip function?
Python zip() function returns a zip object, which maps a similar index of multiple
containers. It takes an iterable, converts it into an iterator and aggregates the
elements based on iterables passed. It returns an iterator of tuples.
Syntax:
zip(*iterables)
44. What are Pickling and Unpickling?
Pickling: The pickle module converts any Python object into a byte stream
(not a string representation). This byte stream can then be stored in a file,
sent over a network, or saved for later use. The function used for pickling is
pickle.dump().
Unpickling: The process of retrieving the original Python object from the
byte stream (saved during pickling) is called unpickling. The function used
for unpickling is pickle.load().
45. What is the difference between @classmethod, @staticmethod and
instance methods in Python?
1. Instance Method operates on an instance of the class and has access to
instance attributes and takes self as the first parameter. Example:
def method(self):
2. Class Method directly operates on the class itself and not on instance, it takes
cls as the first parameter and defined with @classmethod.
Example: @classmethod def method(cls):
3. Static Method does not operate on an instance or the class and takes no self
or cls as an argument and is defined with @staticmethod.
Example: @staticmethod def method(): align it and dont bolod anything and not
bullet points
46. What is __init__() in Python and how does self play a role in it?
__init__() is Python’s equivalent of constructors in OOP, called
automatically when a new object is created. It initializes the object’s
attributes with values but doesn’t handle memory allocation.
Memory allocation is handled by the __new__() method, which is called
before __init__().
The self parameter in __init__() refers to the instance of the class, allowing
access to its attributes and methods.
self must be the first parameter in all instance methods, including 47.
Write a code to display the current time?
48. What are Access Specifiers in Python?
Python uses the ‘_’ symbol to determine the access control for a specific data
member or a member function of a class. A Class in Python has three types
of Python access modifiers:
Public Access Modifier: The members of a class that are declared public
are easily accessible from any part of the program. All data members and
member functions of a class are public by default.
Protected Access Modifier: The members of a class that are declared
protected are only accessible to a class derived from it. All data members
of a class are declared protected by adding a single underscore ‘_’ symbol
before the data members of that class.
Private Access Modifier: The members of a class that are declared private
are accessible within the class only, the private access modifier is the most
secure access modifier. Data members of a class are declared private by
adding a double underscore ‘__’ symbol before the data member of that
class.
49. What are unit tests in Python?
Unit Testing is the first level of software testing where the smallest testable parts
of the software are tested. This is used to validate that each unit of the software
performs as designed. The unit test framework is Python’s xUnit style
framework. The White Box Testing method is used for Unit testing.
50. Python Global Interpreter Lock (GIL)?
Python Global Interpreter Lock (GIL) is a type of process lock that is used by
Python whenever it deals with processes. Generally, Python only uses only one
thread to execute the set of written statements. The performance of the single-
threaded process and the multi-threaded process will be the same in Python
and this is because of GIL in Python. We can not achieve multithreading in
Python because we have a global interpreter lock that restricts the threads and
works as a single thread.
51. What are Function Annotations in Python?
Function Annotation is a feature that allows you to add metadata to
function parameters and return values. This way you can specify the input
type of the function parameters and the return type of the value the
function returns.
Function annotations are arbitrary Python expressions that are associated
with various parts of functions. These expressions are evaluated at compile
time and have no life in Python’s runtime environment. Python does not
attach any meaning to these annotations. They take life when interpreted
by third-party libraries, for example, mypy.
52. What are Exception Groups in Python?
The latest feature of Python 3.11, Exception Groups. The ExceptionGroup can be
handled using a new except* syntax. The * symbol indicates that multiple
exceptions can be handled by each except* clause.
ExceptionGroup is a collection/group of different kinds of Exception. Without
creating Multiple Exceptions we can group together different Exceptions which
we can later fetch one by one whenever necessary, the order in which the
Exceptions are stored in the Exception Group doesn’t matter while calling them.
try:
raise ExceptionGroup(‘Example ExceptionGroup’, (
TypeError(‘Example TypeError’),
ValueError(‘Example ValueError’),
KeyError(‘Example KeyError’),
AttributeError(‘Example AttributeError’)
))
except* TypeError:
…
except* ValueError as e:
…
except* (KeyError, AttributeError) as e:
…
53. What is Python Switch Statement?
From version 3.10 upward, Python has implemented a switch case feature called
“structural pattern matching”. You can implement this feature with the match
and case keywords. Note that the underscore symbol is what you use to define a
default case for the switch statement in Python.
Note: Before Python 3.10 Python doesn’t support match Statements.
match term:
case pattern-1:
action-1
case pattern-2:
action-2
case pattern-3:
action-3
case _:
action-default
54. What is Walrus Operator?
Walrus Operator allows you to assign a value to a variable within an
expression. This can be useful when you need to use a value multiple times
in a loop, but don’t want to repeat the calculation.
Walrus Operator is represented by the `:=` syntax and can be used in a
variety of contexts including while loops and if statements.
Note: Python versions before 3.8 doesn’t support Walrus Operator.