## Variables

We can create a new Python 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:

name = "Roger"

Here’s an example with a number:

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:

name1
AGE
aGE
a11111
my_name
_name

These are invalid variable names:

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

1 + 1
"Roger"

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

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:

name = "Roger"; print(name)

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

#this is a commented line

name = "Roger" # this is an inline comment

## Indentation

Indentation in Python is meaningful.

You cannot indent randomly like this:

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.