Years ago, when I first got into learning Python (while I was still a QA engineer) I wasn’t sure about the order in which I should learn Python. So, what is the order to learn Python? Let’s look into the most common topics and questions people ask when it comes to learning Python properly.

What Is The Order To Learn Python?

As a Python developer with 7+ years of experience, I can say that it’s important for you as a beginner to learn Python in a specific order.

Start with the basic concepts of programming, such as the following:

  • Variables
  • Data types
  • Loops
  • Control structures

These will give you a solid foundation and understanding of fundamentals. From there, you can move on to:

  • Learning the syntax of Python
  • How to write and run programs
  • How to define and call functions
  • How to work with modules.

A great practice for that is log file parsing, I’ve written a couple of posts about it here on this blog, here’s one for you. After that, it’s helpful to learn about:

  • Python’s built-in data structures
  • That would include lists, tuples, and dictionaries
  • How to store and manipulate data in your programs with the mentioned data structures

Once you have a handle on these basics, you can start exploring:

  • Object-oriented programming in Python (here’s another post on this topic)
  • Including how to define and work with classes and objects.
  • Dive into more advanced topics like concurrency, functional programming, and data analysis.

🚨 It’s a journey, but one that is well worth taking for anyone interested in becoming a Python developer. Let’s look into the most common questions regarding the order in which you should learn Python concepts.

How Many Types Of Variables Are There In Python?

To give you a perspective on why learning the basic concepts first is important let’s look into how many types of variables are there in Python. 👇🏻

There are two main types of variables in Python:

  • Mutable variables
  • Immutable variables

Mutable variables, like lists, dictionaries, and sets, can be modified after they are created.

# Define a mutable variable called "my_list" and assign it a list value
my_list = [1, 2, 3]

# Modify the value of "my_list" by adding an element to it

# Print the modified value of "my_list"
# Because "my_list" is a mutable variable, .append() operation is allowed and the value of "my_list" is updated to include the new element. 
print(my_list) # Output: [1, 2, 3, 4]

On the other hand, immutable variables, such as integers, floats, strings, and tuples, cannot be modified once they are created.

a = 1
b = a

print(id(a) == id(b)) # Output: True

a = 10

print(id(a) == id(b)) # Output: False

In the immutable code example, the first print statement outputs True because the variables a and b are both assigned the same integer value 1 and therefore refer to the same object in memory.

This can be confirmed by the fact that the id() function, which returns the memory address of an object, returns the same value for both a and b.

It’s worth noting that while the variables themselves are either mutable or immutable, the values they store can be of any data type.

For example, a list variable is mutable, but it can store immutable values like integers or strings.

Understanding the differences between these types of variables is an important part of learning the basic concepts in Python.

What Is Python Syntax? (4 Examples)

Python syntax refers to the set of rules that govern how a Python program is written and structured. It includes things like how to write and format Python code, how to use indentation to group statements, and how to use keywords and operators.

Here is an example of a simple Python program that demonstrates some of the basic syntax of the language:

# This is a comment in Python
# It is used to provide information or explain the code

# Define a variable called "message" and assign it a string value
message = "Hello, world!"

# Print the value of the "message" variable to the console

# Define a function called "greet" that takes a single argument "name"
def greet(name):
    # Use the "print" function to output a greeting
    print("Hello, " + name + "!")

# Call the "greet" function with the string "Alice" as the argument

In this example, we see a comment, a variable assignment, a function definition, and a function call. All of these are examples of simple Python syntax. Here are some more advanced examples of Python syntax:

Conditional statements: Syntax for conditional statements, such as if and else allows you to control the flow of your program based on certain conditions.

For example:

if x > 0:
  print("x is positive")
  print("x is not positive")

Loops: Syntax for loops, such as for and while allows you to repeat a block of code multiple times. Here’s a larger post I wrote on the topic of how to repeat code in Python.

A very simple example of a for loop would be:

for i in range(10):

Exception handling: Syntax for exception handling, such as try and except, allows you to handle errors that may occur during the execution of your program.

For example:

  # Some code that may raise an exception
except Exception as e:
  # Code to handle the exception

Modules and imports: Syntax for importing and using modules allows you to reuse code from other parts of your program or from external libraries.

For example:

import math


Syntax is important for anyone learning Python because it determines how the code is written and structured. Proper syntax is necessary for the interpreter to understand and execute your code correctly.

It also helps to make your code more readable and easier to maintain for you and other Python developers working alongside you.

By understanding and following Python’s syntax rules, you can write more effective and efficient programs.

Is Python Good To Learn Data Structures?

Yes, Python is a good language to learn data structures.

Python provides a number of built-in data structures that allow you to store and manipulate data in a variety of ways.

These data structures include lists, tuples, dictionaries, and sets, as well as more advanced data structures like stacks, queues, and trees.


# Define a list of integers
my_list = [1, 2, 3, 4, 5]

# Access an element of the list by index
print(my_list[2])  # Outputs 3

# Modify an element of the list by index
my_list[3] = 6

# Add an element to the end of the list

print(my_list) # Outputs [1, 2, 3, 6, 5, 7]


# Define a tuple of strings
my_tuple = ("red", "green", "blue")

# Access an element of the tuple by index
print(my_tuple[1])  # Outputs "green"

# Tuples are immutable, so you cannot modify their elements
  my_tuple[2] = "yellow"
except TypeError as e:
  print("Cannot modify tuple")


# Define a dictionary with string keys and integer values
my_dict = {"apple": 1, "banana": 2, "cherry": 3}

# Access a value of the dictionary by key
print(my_dict["apple"])  # Outputs 1

# Modify a value of the dictionary by key
my_dict["banana"] = 4

# Add a new key-value pair to the dictionary
my_dict["date"] = 5

print(my_dict) # Outputs {'apple': 1, 'banana': 4, 'cherry': 3, 'date': 5}

Python’s data structures are easy to use and understand, making them a good choice for beginners. They are also highly flexible and efficient, making them suitable for a wide range of applications.

For example, you can use lists to store and manipulate large amounts of data, dictionaries to store data in key-value pairs, and sets to store and manipulate unique elements.

In addition to the built-in data structures, Python also has a number of libraries and modules that provide additional data structure options, such as NumPy for numerical data and Pandas for data analysis.

Overall, Python’s data structures make it a powerful language for working with and manipulating data.

How Do Python Classes Work?

In Python, a class is a template for creating objects. It defines the characteristics and behaviors that objects of the class will have. When you create an object from a class, it is called an instance of the class.

To define a class in Python, you use the class keyword followed by the name of the class. The class definition usually contains a number of methods, which are functions that are defined within the class and operate on its data.

Methods are defined using the def keyword, just like regular functions.

Here is a simple example of a Python class that defines a Dog class with a single method called bark:

class Dog:
    def bark(self):

# Create an instance of the Dog class
dog1 = Dog()

# Call the "bark" method of the dog1 instance
dog1.bark()  # Outputs "Woof!"

In this example, we define a class called Dog that has a single method called bark We then create an instance of the Dog class called dog1 and call its bark method, which prints a message to the console.

Classes can also have data attributes, which are variables that are defined within the class and store information about the class and its instances.

Data attributes can be accessed and modified using the self keyword, which refers to the current instance of the class.

Here is an example of a Python class that defines a Person class with a data attribute and a method:

class Person:
    # Define a data attribute to store the person's name
    name = ""

    # Define a method to set the person's name
    def set_name(self, new_name): = new_name

# Create an instance of the Person class
person1 = Person()

# Set the name of the person1 instance

# Print the name of the person1 instance
print(  # Outputs "Alice"

In this example, we create an instance of the Person class called person1 and use its set_name method to set its name attribute to Alice.

We then print the value of the name attribute to the console, which outputs Alice

Classes can also have special methods, such as the __init__ method, which is called when an instance of the class is created. The __init__ method can be used to initialize the data attributes of the instance.

Here is an example of a Python class that uses the __init__ method to initialize its data attributes:

class Car:
    # Define data attributes to store the car's make and model
    make = ""
    model = ""

    # Define the "__init__" method to initialize the data attributes
    def __init__(self, new_make, new_model):
        self.make = new_make
        self.model = new_model

# Create an instance of the Car class and initialize its data attributes
car1 = Car("Ford", "Mustang")

# Print the make and model of the car1 instance
print(car1.make)  # Outputs "Ford"
print(car1.model)  # Outputs "Mustang"

In this example, we define a class called Car that has data attributes called make and model.

We also define an __init__ method that takes two arguments, new_make and new_model and assigns them to the make and model attributes of the instance.

We then create an instance of the Car class called car1 and initialize its data attributes by passing the values Ford and Mustang as arguments to the __init__ method.

Finally, we print the values of the make and model attributes to the console.

I'll help you become a Python developer!

If you're interested in learning Python and getting a job as a Python developer, send me an email to and I'll see if I can help you.

Roberts Greibers

Roberts Greibers

I help engineers to become backend Python/Django developers so they can increase their income