Переменные и типизация
Представьте, что нам нужно напечатать на экран фразу 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 была объявлена как число.