---
title: Variables, Naming Rules, and Basic Syntax
date: 2026-01-01T12:12:13Z
modified: 2026-01-03T16:01:40Z
permalink: "https://www.micheledpierri.com/python/variables/"
type: page
status: publish
excerpt: ""
wpid: 2462
featured_image: "https://www.micheledpierri.com/wp-content/uploads/2026/01/Python_03.webp"
featured_image_alt: Children dressed in lab coats are studying a python
timestamp: 2026-01-03T16:01:40Z
tags: []
---

## Lesson Objectives

By the end of this lesson, you will be able to:

- Understand what variables are and why they matter
- Assign and reassign variables correctly
- Follow Python naming conventions
- Read and write clean, predictable Python code

These concepts are **non-negotiable** for any serious use of Python in statistics, data analysis, or machine learning.

---

## 1️⃣ What Is a Variable in Python

A variable is a **name bound to a value**.

In Python, variables are created **when you assign a value** to them.

age = 40

```
<span class="line"><span style="color: #F8F8F2">age </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">40</span></span>
<span class="line"></span>
<span class="line"></span>
```

This line means:

- create a name: `age`
- bind it to the value: `40`

Python does **not** require prior type declaration.

---

## 2️⃣ Variable Assignment

### Basic Assignment

name = "Michele"
height = 1.78
is_doctor = True

```
<span class="line"><span style="color: #F8F8F2">name </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Michele</span><span style="color: #E9F284">"</span></span>
<span class="line"><span style="color: #F8F8F2">height </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">1.78</span></span>
<span class="line"><span style="color: #F8F8F2">is_doctor </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">True</span></span>
<span class="line"></span>
<span class="line"></span>
```

Python automatically infers the type.

### Reassignment

Variables can be reassigned at any time:

age = 40
age = 41

```
<span class="line"><span style="color: #F8F8F2">age </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">40</span></span>
<span class="line"><span style="color: #F8F8F2">age </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">41</span></span>
<span class="line"></span>
<span class="line"></span>
```

The previous value is overwritten.

This flexibility is powerful, but **requires discipline**.

---

## 3️⃣ Dynamic Typing (Important Concept)

Python is **dynamically typed**:

x = 10
x = "ten"

```
<span class="line"><span style="color: #F8F8F2">x </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">10</span></span>
<span class="line"><span style="color: #F8F8F2">x </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">ten</span><span style="color: #E9F284">"</span></span>
<span class="line"></span>
<span class="line"></span>
```

This is allowed.

However, **changing meaning mid-code is bad practice** in analytical workflows.

Rule of thumb:

> A variable name should always represent the same concept.

---

## 4️⃣ Naming Rules (Syntax-Level Rules)

Python variable names must:

- start with a letter or `_`
- contain only letters, numbers, `_`
- be case-sensitive

### Valid Names

age
patient_age
_age
age2

```
<span class="line"><span style="color: #F8F8F2">age</span></span>
<span class="line"><span style="color: #F8F8F2">patient_age</span></span>
<span class="line"><span style="color: #F8F8F2">_age</span></span>
<span class="line"><span style="color: #F8F8F2">age2</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Invalid Names

2age
patient-age
patient age

```
<span class="line"><span style="color: #FF5555; font-style: italic; text-decoration: underline">2age</span></span>
<span class="line"><span style="color: #F8F8F2">patient</span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2">age</span></span>
<span class="line"><span style="color: #F8F8F2">patient age</span></span>
<span class="line"></span>
<span class="line"></span>
```

---

## 5️⃣ Naming Conventions (Professional Rules)

Python follows **snake\_case** by convention:

patient_age
mean_value
total_score

```
<span class="line"><span style="color: #F8F8F2">patient_age</span></span>
<span class="line"><span style="color: #F8F8F2">mean_value</span></span>
<span class="line"><span style="color: #F8F8F2">total_score</span></span>
<span class="line"></span>
<span class="line"></span>
```

Avoid:

PatientAge
patientAge
x1
tmp

```
<span class="line"><span style="color: #F8F8F2">PatientAge</span></span>
<span class="line"><span style="color: #F8F8F2">patientAge</span></span>
<span class="line"><span style="color: #F8F8F2">x1</span></span>
<span class="line"><span style="color: #F8F8F2">tmp</span></span>
<span class="line"></span>
<span class="line"></span>
```

In data analysis and ML, **clear variable names are critical for reproducibility**.

---

## 6️⃣ Comments in Python

Comments are ignored by Python and used to explain code.

### Single-line Comment

# This is a comment
age = 40

```
<span class="line"><span style="color: #6272A4"># This is a comment</span></span>
<span class="line"><span style="color: #F8F8F2">age </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">40</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Why Comments Matter

- explain _why_, not _what_
- document assumptions
- clarify non-obvious logic

Bad comment:

age = 40  # assign age

```
<span class="line"><span style="color: #F8F8F2">age </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">40</span><span style="color: #F8F8F2">  </span><span style="color: #6272A4"># assign age</span></span>
<span class="line"></span>
<span class="line"></span>
```

Good comment:

age = 40  # age at admission

```
<span class="line"><span style="color: #F8F8F2">age </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">40</span><span style="color: #F8F8F2">  </span><span style="color: #6272A4"># age at admission</span></span>
<span class="line"></span>
<span class="line"></span>
```

---

## 7️⃣ Inspecting Variables

You can print variables:

print(age)
print(name)

```
<span class="line"><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(age)</span></span>
<span class="line"><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(name)</span></span>
<span class="line"></span>
<span class="line"></span>
```

You can also inspect their type:

type(age)

```
<span class="line"><span style="color: #8BE9FD; font-style: italic">type</span><span style="color: #F8F8F2">(age)</span></span>
<span class="line"></span>
<span class="line"></span>
```

Expected output:

<class 'int'>

```
<span class="line"><span style="color: #FF79C6"><class</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">'</span><span style="color: #F1FA8C">int</span><span style="color: #E9F284">'</span><span style="color: #FF79C6">></span></span>
<span class="line"></span>
<span class="line"></span>
```

This becomes important when debugging analytical code.

---

## 8️⃣ Common Beginner Mistakes

### Using reserved keywords

class = 10

```
<span class="line"><span style="color: #FF79C6">class</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">10</span></span>
<span class="line"></span>
<span class="line"></span>
```

Error:

SyntaxError

```
<span class="line"><span style="color: #8BE9FD; font-style: italic">SyntaxError</span></span>
<span class="line"></span>
<span class="line"></span>
```

Python has reserved keywords (`if`, `for`, `class`, `def`, etc.).

### Ambiguous variable names

x = 120

```
<span class="line"><span style="color: #F8F8F2">x </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">120</span></span>
<span class="line"></span>
<span class="line"></span>
```

Later, no one remembers what `x` means — including you.

---

## 9️⃣ How This Applies to Data Analysis

In real-world analytical code, variables often represent:

- patient-level features
- statistical parameters
- model outputs
- intermediate transformations

Clear variable naming directly impacts:

- readability
- correctness
- reproducibility

---

## FAQ — Frequently Asked Questions

**Q: Do I need to declare variable types?**

A: No. Python infers them automatically.

**Q: Can I change a variable’s type?**

A: Yes, but you usually shouldn’t in analytical code.

**Q: Are variables copied or referenced?**

A: Assignment binds names to objects. This matters later with collections.

**Q: Why is snake\_case important?**

A: Consistency improves readability and collaboration.

---

## Exercises (10)

### Exercise 1

Create a variable called `age` and assign it a number.

### Exercise 2

Create a variable `name` with your name.

### Exercise 3

Print both variables.

### Exercise 4

Reassign `age` with a new value.

### Exercise 5

Create a variable `height_m`.

### Exercise 6

Check the type of `height_m`.

### Exercise 7

Create a boolean variable.

### Exercise 8

Write a meaningful comment for a variable.

### Exercise 9

Create two variables and swap their values.

### Exercise 10

Predict the output before running:


```
x = 5
x = x + 2
print(x)
```

---

## Solutions

### Exercise 1

age = 40

```
<span class="line"><span style="color: #F8F8F2">age </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">40</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 2

name = "Michele"

```
<span class="line"><span style="color: #F8F8F2">name </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Michele</span><span style="color: #E9F284">"</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 3

print(age)
print(name)

```
<span class="line"><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(age)</span></span>
<span class="line"><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(name)</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 4

age = 41

```
<span class="line"><span style="color: #F8F8F2">age </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">41</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 5

height_m = 1.78

```
<span class="line"><span style="color: #F8F8F2">height_m </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">1.78</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 6

type(height_m)

```
<span class="line"><span style="color: #8BE9FD; font-style: italic">type</span><span style="color: #F8F8F2">(height_m)</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 7

is_active = True

```
<span class="line"><span style="color: #F8F8F2">is_active </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">True</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 8

patient_id = 1023  # unique identifier

```
<span class="line"><span style="color: #F8F8F2">patient_id </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">1023</span><span style="color: #F8F8F2">  </span><span style="color: #6272A4"># unique identifier</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 9

a = 1
b = 2
a, b = b, a

```
<span class="line"><span style="color: #F8F8F2">a </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">1</span></span>
<span class="line"><span style="color: #F8F8F2">b </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">2</span></span>
<span class="line"><span style="color: #F8F8F2">a, b </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> b, a</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 10

# Output: 7

```
<span class="line"><span style="color: #6272A4"># Output: 7</span></span>
<span class="line"></span>
<span class="line"></span>
```

---

## Next Lesson Preview

In **Lesson 04**, you will learn:

- core Python data types (`int`, `float`, `str`, `bool`)
- type conversion
- why types matter in numerical computation

## This is where **bugs begin — and how to prevent them**.