# The basics of working with Python

> A guide to the basics of working with Python: how to create variables, write expressions and statements, add comments, and why indentation actually matters.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2020-11-30 | Topics: [Python](https://flaviocopes.com/tags/python/) | Canonical: https://flaviocopes.com/python-basics/

## Variables

We can create a new [Python](https://flaviocopes.com/python-introduction/) variable by assigning a value to a label, using the `=` assignment operator.

In this example we assign a string with the value "Roger" to the `name` label:

```python
name = "Roger"
```

Here's an example with a number:

```python
age = 8
```

A variable name can be composed by characters, numbers, the `_` underscore character. It can't start with a number. These are all **valid** variable names:

```python
name1
AGE
aGE
a11111
my_name
_name
```

These are **invalid** variable names:

```python
123
test!
name%
```

Other than that, anything is valid unless it's a Python **keyword**. There are some keywords like `for`, `if`, `while`, `import` and more.

There's no need to memorize them, as Python will alert you if you use one of those as a variable, and you will gradually recognize them as part of the Python programming language syntax.

## Expressions and statements

We can _expression_ any sort of code that returns a value. For example

```python
1 + 1
"Roger"
```

A statement on the other hand is an operation on a value, for example these are 2 statements:

```python
name = "Roger"
print(name)
```

A program is formed by a series of statements. Each statement is put on its own line, but you can use a semicolon to have more than one statement on a single line:

```python
name = "Roger"; print(name)
```

## Comments

In a Python program, everything after a hash mark is ignored, and considered a comment:

```python
#this is a commented line

name = "Roger" # this is an inline comment
```

## Indentation

Indentation in Python is meaningful.

You cannot indent randomly like this:

```python
name = "Flavio"
    print(name)
```

Some other languages do not have meaningful whitespace, but in Python, indentation matters.

In this case, if you try to run this program you would get a `IndentationError: unexpected indent` error, because indenting has a special meaning.

Everything indented belongs to a block, like a control statement or conditional block, or a function or class body. We'll see more about those later on.
