- Как работают переменные в Python
- Переменные, объекты и ссылки
- Идентификатор объекта (Object Identity)
- Работа с переменными
- Именование переменных
- Полное руководство по использованию инициализации начальным значением в Python
- Использование инициализации начальным значением
- Начальные значения переменных
- Инициализация переменных значением
- Инициализация переменных при помощи оператора if
- Инициализация переменных при помощи генераторов списков
- Инициализация переменных при помощи генераторов словарей
- Инициализация переменных при помощи оператора switch
- Инициализация переменных при помощи функций
- Заключение
Как работают переменные в Python
Каждый элемент данных в Python является объектом определенного типа или класса. Когда, в процессе выполнения программного кода, появляется новое значение, интерпретатор выделяет для него область памяти — то есть создаёт объект определенного типа (число, строка и т.д.). После этого Python записывает в свой внутренний список адрес этого объекта.
Но как теперь получить доступ к созданному объекту? 🤷♀️
Для этого и существуют переменные — они дают возможность удобно работать с объектами используя имена вместо адресов.
Простыми словами переменная в Python — это просто имя, прикрепленное к определенному объекту
Чтобы создать новую переменную в Python, ее не нужно заранее инициализировать — достаточно придумать ей имя и присвоить значение через оператор = .
a = 123 print(a) > 123 print(type(a)) print(id(a)) 1827204944
В примере выше мы создали переменную a и присвоили ей значение 123 , далее вывели ее значение, тип и адрес объекта в памяти.
🍏 🍊 Приведем простую аналогию: Представьте, что у вас есть много непрозрачных бутылок, а сами вы занимаетесь производством фруктовых соков. Однажды вы выжали фрукты и в один сосуд налили апельсиновый сок, а во второй — яблочный. После этого ёмкости были запечатаны. Резонный вопрос: как теперь выяснить содержимое отдельно взятой бутылки?
Ответ: предварительно их подписать. Сделав это, вы будете точно знать, что находится в бутылках, а значит, сможете производить с ними дальнейшие операции: назначать цену, сортировать, отправлять на продажу и так далее.
Итак, ваш фреш-бизнес разросся, и для хранения соков пришлось арендовать склад, где каждая бутылка находится строго на своём месте. Теперь у вас есть ещё и специальные карточки: на каждой из них записаны наименование продукта и адрес этого продукта на складе. Когда требуется достать конкретную ёмкость с соком, вы смотрите на карточку, читаете номер ячейки, а затем идёте к обозначенному месту на складе и берёте оттуда нужную бутылку.
- переменная — карточка продукции;
- адрес — это номер ячейки на складе;
- объект — сама ячейка;
- данные — бутылка с соком внутри.
Переменные, объекты и ссылки
Для понимания работы переменных, необходимо разобрать, что происходит, когда вы создаете новую переменную и присваиваете ей значение?
В данном примере происходит следующее:
- создается объект типа int со значением 100 ;
- создается переменная a ;
- в переменной a сохранится адрес (ссылка) на объект;
Важно : переменная в Python не хранит значение напрямую — она хранит лишь ссылку на объект
Теперь посмотрим что произойдет, если одной переменной присвоить другую переменную:
b = a print(id(a)) > 1827204576 print(id(b)) > 1827204576
В данном примере Python не создает новый объект — он просто создает переменную, которая ссылается на тот же объект, что и переменная a .
Предположим, что в какой-то момент вы захотели поменять значение переменной b :
b = 500 print(id(a)) > 1827204576 print(id(b)) > 56754272
В данном примере Python создал новый объект типа int, и теперь переменная b ссылается на новый объект.
Рассмотрим еще один пример:
b = «tree» print(id(b)) > 54134048
В этом примере создается новый объект типа str , и переменная b ссылается на новый объект.
b = «tree», переменная b теперь ссылается на новый объект строкового типа
На объект типа int со значением 500 больше никто не ссылается. Следовательно, он больше не доступен и будет удален сборщиком мусора (тем самым освободив немного памяти).
Идентификатор объекта (Object Identity)
В примерах выше мы вызывали функцию id() . Эта функция возвращает число, которое является неизменным и уникальным для каждого объекта на протяжении его жизненного периода:
a = b = 1 print(id(a)) > 1593636784 print(id(b)) > 1593636784 print(id(1)) > 1593636784
Видно, что объект здесь всего один. А a и b — по-разному названные переменные, которые на него ссылаются. Проверить равенство идентификаторов можно с помощью оператора is :
Работа с переменными
Именование переменных
В языке Python имя переменной должно состоять только из цифр, букв и знаков подчеркивания. И не должно начинаться с цифры.
Это жёсткий внутренний закон языка, помимо которого есть свод более мягких, но не менее важных правил, и они говорят нам:
- давайте переменным имена, которые описывают суть объекта;
- используйте единый стиль именования в рамках каждого проекта;
- старайтесь не создавать наименования длиннее пятнадцати символов;
Полное руководство по использованию инициализации начальным значением в Python
Инициализация начальным значением — это процесс установки начального значения для переменной при ее определении. В Python есть несколько способов установки начального значения переменной, и в этом руководстве мы рассмотрим их все.
Использование инициализации начальным значением
Начальные значения переменных
Переменные в Python могут иметь различные типы данных, и, следовательно, разные начальные значения:
- int : 0
- float : 0.0
- bool : False
- str : пустая строка «»
- list : пустой список []
- tuple : пустой кортеж ()
- dict : пустой словарь <>
Инициализация переменных значением
Простейший способ установки начального значения для переменной — это использование знака равенства (=):
В этом примере мы инициализируем переменную x значением 5 .
Инициализация переменных при помощи оператора if
Мы можем использовать оператор if для проверки условия и установки значения переменной в зависимости от результата проверки:
if condition: x = value else: x = other_value
В этом примере мы проверяем значение переменной condition . Если оно истинно, мы устанавливаем переменную x значением value , если нет — значением other_value .
Инициализация переменных при помощи генераторов списков
Генератор списков — это конструкция, которая позволяет создавать списки очень легко и эффективно:
evens = [x for x in range(10) if x % 2 == 0]
В этом примере мы создаем список evens , который содержит только четные числа от 0 до 9.
Инициализация переменных при помощи генераторов словарей
Генераторы словарей — это конструкции, которые позволяют создавать словари очень легко и эффективно:
В этом примере мы создаем словарь students , который содержит оценки студентов из списка records .
Инициализация переменных при помощи оператора switch
В Python нет оператора switch, но мы можем эмулировать его при помощи словарей:
В этом примере мы определяем функцию f , которая возвращает значение из словаря в зависимости от переданного аргумента.
Инициализация переменных при помощи функций
Мы можем использовать функции для установки начального значения переменной:
def get_value(): return 42 x = get_value()
В этом примере мы определяем функцию get_value , которая возвращает значение 42 , и затем инициализируем переменную x этим значением.
Заключение
Использование инициализации начальным значением в Python дает возможность устанавливать начальные значения переменных разными способами. Каждый способ имеет свои особенности и может быть полезен в разных ситуациях. В этом руководстве мы рассмотрели все доступные в Python способы инициализации начальным значениям.