Переменные и типизация

Представьте, что нам нужно напечатать на экран фразу Hello, world! не один, а два раза. Эту задачу можно решить так:

print("Hello world!")
print("Hello world!")

В простейшем случае так можно поступать. Но если фраза "Hello world!" будет использоваться чаще, в разных частях программы, и ещё и при каких-то условиях, то придется ее везде повторять — это неудобно. А если нужно изменить фразу? А такое происходит довольно часто. Нам придётся найти все места с этой фразой и выполнить замену.

А можно поступить по-другому. Чтобы не копировать выражение, достаточно создать с ней переменную. Переменная - это имя, с которым связан объект в Python.

greeting = "Hello world!"
print(greeting)
print(greeting)

В строчке greeting = "Hello world!" мы создаём переменную с именем greeting и присваиваем ей значение "Hello world!". Переменная указывает на объект, который является строкой с данными "Hello world!". Благодаря этому, объект можно использовать многократно и не дублировать его постоянно.

Для имени переменной используется любой набор допустимых символов: буквы английского алфавита, цифры, знак _. При этом цифру нельзя ставить в начале.

На самом деле набор допустимых символов гораздо больше (около 110000). Подавляющее большинство из них - это символы Unicode (буквы разных языков: кириллица, греческий, китайский, японский; и многие другие символы). То есть, следующий код выполнится без ошибок.

Один = β̅ = 1
print(Один + β̅)

Но не нужно так делать. Приколы - это весело, но программу Вам потом читать и изменять. А возможно и другим людям.

Имена переменных регистрозависимы, то есть имя greeting и имя GREETING — это два разных имени для двух разных переменных. Регистр в Python имеет важное значение, никогда не забывайте про него.

Переменной можно "переприсвоить" объект:

greeting = "Hello world!"
print(greeting)  # Hello world!

greeting = "Hello pyplanet!"
print(greeting)  # Hello pyplanet!

Возможно множественное присваивание (один и тот же объект нескольким переменным):

greeting = hi = "Hello world!"
print(greeting)  # Hello world!
print(hi)  # Hello world!

Переменные не надо "объявлять", как, например, в Pascal, или в C:

var a1,a2,a3: integer;
int a1,a2,a3;

Python - строгая и динамическая типизация

Во многих курсах можно услышать эти слова, кратко поясню, что они означают.

Строгая означает, что в Python нет неявного приведения типов.

Например, в Javascript "1" + 10 это "110". Неявно число 10 было преобразовано в строку "10", чтобы можно было сложить со строкой "1" (сложение строк это конкатенация, то есть объединение двух строк в одну). Отсюда такой результат. Python же выдаст ошибку при попытке выполнения данного кода, а не станет угадывать, что к какому типу надо привести, чтобы было возможно выполнить операцию.

Динамическая же значит, что у переменной нет постоянного типа, и тип одной переменной в разные моменты времени может быть разный.

a = 1
print(a)
a = "String"
print(a)

выполнится, и выведет сначала 1, потом String.

В отличие от языков, например, C или Pascal, где типизация статическая,

int a = 1;
a = "String";

не скомпилируется, потому что переменная a была объявлена как число.