Top 20 Python Interview questions and answers for beginners
Tags: python, career, programming, beginners
Published: 2022-12-27 21:47:51

Python is one of the most popular and loved programming languages today. It was developed by Guido van Rossum and was first released in 1991. From startups to big tech companies and freelancers, everyone is harnessing the power of Python. In fact, according to a [Stack Overflow developers' survey](https://www.educative.io/blog/stackoverflow-dev-survey-key-takeaways-learners?eid=5082902844932096), Python is the third most widely used programming language in the world today. This growing popularity is partly attributable to its **simplicity, ease of use, and reduced development time.**

However, this also means that there is tough competition in the job market for Python developers. Many companies search for candidates with a strong understanding of Python fundamentals. Therefore, to be a competitive developer, you must have ample preparation to succeed in interviews. Yet preparing for a Python interview can be tricky if you’re unfamiliar with the kind of questions you will encounter in an interview.

But don’t fret; we’ve compiled a list of the 20 most common Python interview questions and answers you’re likely to be asked in an interview.

**Note:** These questions are mainly geared toward beginners/freshers.


**We’ll cover:**

* 1. [What is PEP 8 and why is it useful?](#pep)
* 2. [What is the difference between a Python tuple and a list?](#tuple)
* 3. [What is scope in Python?](#scope)
* 4. [What are the differences between arrays and lists?](#array)
* 5. [What do `*args` and `**kwargs` mean in Python?](#args)
* 6. [What is a lambda function?](#lambda)
* 7. [Is Python considered a programming or a scripting language?](#script)
* 8. [How do we manage memory in Python?](#memory)
* 9. [What are keywords in Python?](#keywords)
* 10. [What is __init__ ?](#init)
* 11. [What is type conversion in Python?](#type)
* 12. [What are iterators in Python?](#iterators)
* 13. [What do you know about NumPy?](#numpy)
* 14. [What is a Python decorator?](#decorator)
* 15. [What is the difference between `range` & `xrange`?](#range)
* 16. [What are Python modules?](#modules)
* 17. [What are pickling and unpickling?](#pickle)
* 18. [What are docstrings in Python?](#docstring)
* 19. [What is PYTHONPATH?](#pypath)
* 20. [What are Python packages?](#package)


Let's dive right in!

<a name="pep"></a>
## 1. What is PEP 8, and why is it useful?

PEP is an acronym for Python Enhancement Proposal. It is an official design document that contains a set of rules specifying how to format Python code and helps to achieve maximum readability. PEP 8 is useful because it documents all style guides for Python code. This is because contributing to the Python open-source community requires you to adhere to these style guidelines 
strictly.

<a name="tuple"></a>
## 2. What is the difference between a Python tuple and a list?

The difference between a Python list and a tuple is as follows: 

![Tuple](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3b3d747rpz821yd7a6kw.png)

<a name="scope"></a>

## 3. What is scope in Python?

A scope in Python is a block of code in which a Python code lives. While namespaces uniquely identify objects inside a program, they also include a scope that enables us to use their objects without prefixes. A few examples of scope created during a program’s execution are:

**Global scope:** It refers to the top-most scope in a program. These are global variables available throughout the code execution since their inception in the main body of the Python code.

**Local scope:** It refers to the local variables available inside a current function and can only be used locally.

>> Note: Local scope objects and variables can be synced together with global scope objects via keywords like `global`.

<a name="array"></a>

## 4. What are the differences between arrays and lists?

![Arrays and lists](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ci1kq9ii3ptxzfts8mbm.png)

<a name="args"></a>

## 5. What do `*args` and `**kwargs` mean in Python?

We use `*args` to pass a variable length of non-keyword arguments in a Python function. By default, we should use an asterisk `(*)` before the parameter name to pass a variable number of arguments. An asterisk means variable length, and args is the name used by convention. You can use any other name.

**Code example:**

```python
def addition(e, f, *args):
  add = e + f
  for num in args:
      add += num
  return add
print(addition(1, 2, 3, 4, 5))
```

```python
-->
15
```

We use `**kwargs` to pass a variable number of keyword arguments in the Python function. By default, we should use a double-asterisk (**) before the parameter name to represent a `**kwargs` argument.

**Code example:**

```python
def forArguments(**kwargs):
  for key, value in kwargs.items():
      print(key + ": " + value)
forArguments(arg0 = "arg 00", arg1 = "arg 11", arg2 = "arg 22")
```

```python
-->
arg0: arg 00
arg1: arg 11
arg2: arg 22
```

<a name="lambda"></a>

## 6. What is a lambda function?

A lambda function is basically an inline anonymous function (i.e., defined without a name) represented in a single expression that can take several arguments. It is used to create function objects during runtime. 

However, unlike common functions, they evaluate and return only a single expression.

Also, in place of the traditional `def` keyword used for creating functions, a lambda function uses the `lambda` keyword. We typically use a lambda function where functions are required only for short periods. They can be used as:

```python
add_func = lambda x,b : x+b
print(add_func(3,5))
```

```python
8
```

<a name="script"></a>

## 7. Is Python considered a programming or a scripting language?

Python is generally considered to be a general-purpose programming language, but we can also use it for scripting. A scripting language is also a programming language that is used for automating a repeated task that involves similar types of steps while executing a program. Filename extensions for Python scripting language are of different types, such as `.py, .pyc, .pyd, .pyo, .pyw, and .pyz.`

<a name="memory"></a>

## 8. How do we manage memory in Python?

We handle memory management in Python via a **Python Memory Manager** using a private head space. This is because all Python objects and data structures live in a private heap. Since we as programmers do not have access to this private heap, the Python interpreter handles this instead.

Additionally, the core API gives access to some tools for us to code.

Python also includes an **in-built garbage collector** to recycle unused memory for private heap space.

![Heap space](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9eiouiijhvlosxv8pf5f.png)

<a name="keywords"></a>

## 9. What are keywords in Python?

Keywords in Python are reserved words with a special meaning. They are generally used to define different types of variables. We cannot use keywords in place of variable or function names. 

There are **35 reserved keywords** in Python: 

![Python Keywords](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rwih8kf8vdajpi2dfbui.png)

![Python keywords](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vaf6pxk6p0fxcx9an5f9.png)

<a name="init"></a>

## 10. What is __init__ ?

In Python, __init__ is a method or constructor used to automatically allocate memory when a new object or instance of a class is created. All classes have the` __init__` method included. 

**Code example:**

```python
# A Sample class with init method
class Alibi:
    # init method or constructor
    def __init__(self, name):
        self.name = name

    # Sample Method
    def hello_hi(self):
        print('Hello, my name is', self.name)


# Creating different objects
p1 = Alibi('NIKE')
p2 = Alibi('PUMA')
p3 = Alibi('ADIDAS')

p1.hello_hi()
p2.hello_hi()
p3.hello_hi()

```

```python
Hello, my name is NIKE
Hello, my name is PUMA
Hello, my name is ADIDAS
```


<a name="type"></a>

## 11. What is type conversion in Python?

Type conversion in Python is the process of changing one data type into another data type. For example: 
* `dict()`: Used to transform a tuple of order (key, value) into a dictionary.
* `str()`: Used to convert integers into strings.

<a name="iterators"></a>

## 12. What are iterators in Python?

An iterator in Python is an object used to iterate over a finite number of elements in data structures like lists, tuples, dicts, and sets. Iterators allow us to traverse through all the elements of a collection and return a single element at a time. 

The iterator object is initialized via the `iter()` method and uses the `next()` method for iteration.


**Code example:**

```python
print("List Iteration")
l = ["educative", "for", "learning"]
for i in l:
    print(i)
```

```python
List Iteration
educative
for
learning
```

<a name="numpy"></a>

## 13. What do you know about NumPy?

NumPy is an acronym for Numerical Python. It is one of the most popular, open-source, general-purpose, and robust Python packages used to process arrays. NumPy comes with several highly optimized functions featuring high performance and powerful n-dimensional array processing capabilities. 

NumPy can be used in trigonometric operations, algebraic and statistical computations, scientific computations, and so on.

<a name="decorator"></a>

## 14. What is a Python decorator?

A decorator in Python is a function that **allows a user to add a new piece of functionality to an existing object without modifying its structure.** You usually call decorators before the definition of the function you want to decorate.

<a name="range"></a>

## 15. How does `range` work?

In Python, `range()` returns an immutable sequence of numbers. It is commonly used to create a `for` loop. It has a few variants. To understand better, let's go through a few examples: 

```python
# Prints a list of numbers from 0 to 9
# Note: by default the list starts from 0 and default step is of size 1
print(list(range(10)))

# Prints a list of numbers from 5 to 8
# step is not provided hence it is 1 by default
print(list(range(5, 9)))

# Prints a list of numbers from 2 to 20
# with a step of size 2
print(list(range(2, 21, 2)))

# Using range to create a for loop
for i in range(10):
  print("Looping =", i)
```

```python
-->
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 6, 7, 8]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
Looping = 0
Looping = 1
Looping = 2
Looping = 3
Looping = 4
Looping = 5
Looping = 6
Looping = 7
Looping = 8
Looping = 9
``` 


<a name="modules"></a>

## 16. ​​What are Python modules?

Python modules are files containing Python definitions and statements to be used in a program. Modules can define functions, classes, and variables. A Python module is created by saving the file with the extension of `.py.` This file contains the classes and functions that are reusable in the code as well as across the modules. They can also include runnable code.
 Advantages of Python modules include:

**Code organization:** Code is easier to understand and use.
**Code reusability:** Other modules can reuse functionality used in a module, hence eliminating the need for duplication.

<a name="pickle"></a>

## 17. What are pickling and unpickling?

**Pickling** is a process in Python where an object hierarchy is transformed into a byte stream. **Unpickling**, in contrast, is the opposite of pickling. It happens when a byte stream is converted back into an object hierarchy. Pickling is also known as “serialization” or “marshaling”.

Pickling uses the pickle module in Python. This module has the method `pickle.dump()` to dump Python objects to disks to achieve pickling. Unpickling uses the method `pickle.load()` to retrieve the data as Python objects. 

![pickling](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2egv1osvgwvv5iyqgxk3.png)

<a name="docstring"></a>

## 18. What are docstrings in Python?

Documentation strings or docstrings are **multi-line strings used to document specific code segments, like Python modules, functions, and classes.**

They help us understand what the function, class, module, or method does without having to read the details of the implementation. Unlike conventional code comments, the docstrings describe what a function does, not how it works. 

We write docstring in three double quotation marks `(""")` as shown in the example below.

**Add up two integer numbers:**

```python
def add(a, b):
    """
    Add up two integer numbers.

    This function simply wraps the ``+`` operator, and does not
    do anything else.

    Examples
    --------
    >>> add(2, 2)
    4
    """
    return a + b
```

We can access the docstring using:

* The `__doc__` method of the object

* The built-in help function

<a name="pypath"></a>

## 19. What is PYTHONPATH?

It is a unique environment variable used when a module is imported. PYTHONPATH acts as a guide to the Python interpreter to determine which module to load at a given time. It is used to check for the presence of the imported modules in various directories. 

Launching the Python interpreter opens the PYTHONPATH inside the current working directory. 

<a name="package"></a>

## 20. What are Python packages?

A Python package is a collection of modules. Modules that are related to each other are usually grouped in the same package. When you require a module from an external package in a program, it can be imported, and its specific modules are then used as required. Packages help avoid clashes between module names. You need to add the package name as a prefix to the module name, joined by a dot to import any module or its content.


## Next practical steps for your Python interview prep

Because interviews are often the most stressful part of finding a job, having in-depth preparation and ample practice will help you gain confidence and crack them successfully.

By practicing the above questions, you can familiarize yourself with common Python concepts. The next practical step should involve practicing these questions alongside coding examples. With ample practice, you will ace your interview and get closer to your dream job!


At Educative, we aim to make the interview process smoother by providing you with a hands-on interactive learning platform. You can learn more about Python, including data structures, built-in functions, web development, runtime, compilers, Python libraries, data science, machine learning in Python, and more, via our comprehensive courses and Python tutorials. Engage with the material through live, in-browser coding environments and address gaps in your knowledge to help actively retain and apply what you need to learn. 

The [**Grokking Coding Interview Patterns in Python**](https://www.educative.io/courses/grokking-coding-interview-patterns-python?utm_campaign=coding-interview&utm_source=medium&utm_medium=text&utm_content=&utm_term=&eid=5082902844932096) course will not just help prepare you for the technical portion of your interview. It will also allow you to learn algorithms and coding patterns to face any problems you may encounter in a Python interview. What you learn in this course will help you progress in your career even after landing your dream job.

_Happy learning!_

## Continue learning about Python and interview prep on Educative
* [Intro to Python machine learning with PyCaret](https://www.educative.io/blog/pycaret-machine-learning?eid=5082902844932096)
* [5 top Python web frameworks of 2023](https://www.educative.io/blog/top-python-web-frameworks?eid=5082902844932096)
* [7 of the most important LeetCode patterns for coding interviews](https://www.educative.io/blog/coding-interview-leetcode-patterns?eid=5082902844932096)

### Start a discussion
What other Python interview questions are good for beginners to practice? Was this article helpful? Let us know in the comments below!