Как назвать переменную в python
Переменные Python – руководство по применению
В Python нам не нужно указывать тип переменной, потому что Python – это язык вывода и достаточно умен, чтобы получить тип переменной.
Имена переменных могут состоять из букв и цифр, но они должны начинаться с буквы или символа подчеркивания. Для имени рекомендуется использовать строчные буквы. Rahul и rahul – две разные переменные.
Что такое переменная в Python?
Переменная в Python – это имя, которое используется для обозначения ячейки памяти. Переменные также известны как идентификаторы и используются для хранения значений.
Наименование идентификатора
Переменные – это пример идентификаторов. Идентификатор используется для распознавания литералов в программе. Правила присвоения имени идентификатору приведены ниже.
Объявление переменной и присвоение значений
Python не обязывает нас объявлять переменную перед ее использованием в приложении. Это позволяет нам создавать переменную в нужное время.
Нам не нужно явно объявлять переменную в Python. Когда мы присваиваем переменной какое-либо значение, эта переменная объявляется автоматически. Оператор равенства(=) используется для присвоения значения переменной.
Ссылки на объекты
Когда мы объявляем переменную, необходимо понимать, как работает интерпретатор Python. Процесс обработки переменных несколько отличается от многих других языков программирования.
Python – это объектно-ориентированный язык программирования; каждый элемент данных принадлежит к определенному типу класса. Рассмотрим следующий пример.
Объект Python создает целочисленный объект и отображает его на консоли. В приведенном выше операторе печати мы создали строковый объект. Давайте проверим его тип с помощью встроенной функции Python type().
В Python переменные – это символическое имя, которое является ссылкой или указателем на объект. Переменные используются для обозначения объектов этим именем.
Давайте разберемся в следующем примере:
На изображении выше переменная a относится к целочисленному объекту.
Предположим, мы присвоили целочисленное значение 50 новой переменной b.
Переменная b относится к тому же объекту, на который указывает a, поскольку Python не создает другой объект.
Присваиваем новое значение b. Теперь обе переменные будут ссылаться на разные объекты.
Python эффективно управляет памятью, если мы присвоим одной и той же переменной два разных значения.
Идентичность объекта
В Python каждый созданный объект уникально идентифицируется в Python. Python гарантирует, что два объекта не будут иметь одинаковый идентификатор. Встроенная функция id() используется для распознавания идентификатора объекта. Рассмотрим следующий пример.
Мы присвоили b = a, a и b обе точки на один и тот же объект. Когда мы проверили их с помощью функции id(), она вернула то же число. При a = 500 функция ссылается на новый идентификатор объекта.
Имена переменных
Мы уже обсуждали, как объявить допустимую переменную. Имена переменных могут быть любой длины, могут иметь заглавные и строчные буквы(от A до Z, от a до z), цифру(0-9) и символ подчеркивания(_). Рассмотрим следующий пример правильных имен переменных.
Рассмотрим следующее допустимое имя переменных.
В приведенном выше примере мы объявили несколько допустимых имен переменных, таких как name, _name_ и т. д. Но такие имена не рекомендуется присваивать, потому что, когда мы пытаемся прочитать код, это может создать путаницу. Имя переменной должно быть описательным, чтобы код был более читабельным.
Ключевые слова из нескольких слов могут быть созданы следующим способом.
Множественное присвоение
Python позволяет нам присваивать значение нескольким переменным в одном операторе, что также известно как множественное присваивание.
Мы можем применить несколько присваиваний двумя способами: либо назначив одно значение нескольким переменным, либо назначив несколько значений нескольким переменным. Рассмотрим следующий пример.
1. Присвоение одного значения нескольким переменным:
2. Присвоение нескольких значений нескольким переменным:
Значения будут присвоены в порядке появления переменных.
Типы переменных Python
В Python есть два типа переменных – локальная переменная и глобальная переменная. Давайте в них разберемся.
Локальная переменная
Локальные переменные – это переменные, которые объявлены внутри функции и имеют область видимости внутри функции.
В приведенном выше коде мы объявили функцию с именем add() и присвоили ей несколько переменных. Эти переменные будут называться локальными переменными, которые имеют область видимости только внутри функции. Если мы попытаемся использовать их вне функции, мы получим следующую ошибку.
Мы пытались использовать локальные переменные вне их области видимости; программа выдала NameError.
Глобальные переменные
Глобальные переменные могут использоваться во всей программе, и их область действия распространяется на всю программу. Мы можем использовать глобальные переменные внутри или вне функции.
Переменная, объявленная вне функции, по умолчанию является глобальной переменной. Python предоставляет ключевое слово global для использования глобальной переменной внутри функции. Если мы не используем ключевое слово global, функция рассматривает ее как локальную переменную. Давайте разберемся в следующем примере.
В приведенном выше коде мы объявили глобальную переменную x и присвоили ей значение. Затем мы определили функцию и получили доступ к объявленной переменной, используя ключевое слово global внутри функции. Теперь мы можем изменить значение. Затем мы присвоили переменной x новое строковое значение. Теперь мы вызвали функцию и приступили к печати x. Она напечатала новое присвоенное значение x.
Удаление переменных
Мы можем удалить переменную с помощью ключевого слова del. Синтаксис приведен ниже.
В следующем примере мы создаем переменную x и присваиваем ей значение. Мы удалили переменную x и напечатали ее, получаем ошибку «переменная x не определена». Переменная x больше не будет использоваться в будущем.
Максимально возможное значение переменной в Python
В отличие от других языков программирования, Python не имеет типов данных long int или float. Он обрабатывает все целочисленные значения как тип данных int. Здесь возникает вопрос: какое максимально возможное значение может содержать переменная в Python? Рассмотрим следующий пример.
Python не имеет специального типа данных для хранения больших чисел.
Печать одиночных и множественных переменных в Python
Мы можем распечатать несколько переменных в одном операторе печати. Ниже приведен пример одно- и многократной печати значений.
Будучи единоличным хозяином своей программы, вы вправе выбирать имена переменным. В прошлой статье я решил назвать переменную name, но с тем же успехом можно было бы ее именовать human, nickname или даже omega12345666: работа программы нисколько не изменилась бы.
Для создания корректных имен переменных надо следовать всего нескольким правилам; о некорректном имени Python вам сообщит, выведя ошибку.
Итак, важнейших правил два:
Вдобавок к этим двум абсолютным законам есть несколько негласных правил, которым следуют все опытные программисты.
Вы тоже, приобретя некоторый опыт, почувствуете разницу между «просто корректными» и «хорошими» именами переменным(приведу пример прямо сейчас: имя omega12345666 — корректное, но очень, очень плохое). Перечислю основное, что надо и нужно запомнить.
Имя должно описывать суть. Следует называть переменные так, чтобы другой программист, взглянув на ваш код, смог толком разобраться, что есть что. Поnэтому, например, score лучше, чем s.
Исключение — кратковременно действующие переменные, которым программисты склонны присваивать короткие имена, например х. Но даже этот случай нельзя считать подлинным исключением, ведь, называя переменную х, программист дает понять, что она временная.
Будьте последовательны. Есть много разных позиций по вопросу о том, как лучше оформлять имена переменных, составленные из нескольких слов. Будет ли лучше, например, написать high_score или highScore?
Я привык пользоваться подчеркиванием.Отнюдь не важно, какой системы вы придерживаетесь, лишь бы вы следовали все время только ей, хотя по стандарту оформления программ правильно использовать для переменных и функций именно подчеркивания.
Уважайте обычай языка. Некоторые правила именования переменных — всего лишь дань традиции. Так, в большинстве языков программирования, в том числе и в Python, имя переменной принято начинать со строчной буквы.
Другая традиция состоит в том, чтобы избегать подчеркиваний в качестве начальных символов в именах переменных (у имен с начальным подчеркиванием в Python особый смысл).
Следите за длиной. Иногда эта рекомендация может вступать в противоречие с первой, требующей от имен переменных описательной силы. В самом деле, разве удобно пользоваться таким, например, именем: persona1_checking_account_bаlance’? Видимо, нет.Чересчур длинные имена переменных проблематичны, в частности, тем, что загромождают код.
А кроме того, чем длиннее имя, тем выше риск сделать в нем опечатку. Советую вам не создавать имена длиннее 15 символов.
Кстати, самодокументирующим называется код, из которого даже без комментариев легко понять, что происходит в программе. «Говорящие» имена переменных — немаловажный шаг на пути к созданию такого кода.
Вот что случится если объявить переменную ошибочно, то есть начать переменную с цифрами:
Именование в Python — как выбирать имена и почему это важно
Н ачинающие программисты не придают значение именованию переменных при написании кода. Особенно это касается новых проектов — есть какая-то идея, её нужно реализовать и получить результат. Нет времени на то, чтобы задумываться о названиях для переменных, функций, классов и т.п.
Но проект растёт, количество кода увеличивается, и в один прекрасный день разработчик понимает, что 80% его времени уходит на чтение кода и его модификацию (а вовсе не на написание нового кода). Код, написанный неделю назад, кажется незнакомым — приходиться тратить время и силы чтобы вспомнить, что он делает. Плохое именование усугубляет картину:
Минусы такого именования:
Основная суть программирования — это управление сложностью. Поддерживать сотни тысяч строк кода — достаточно сложно. Для уменьшения сложности приложение разбивают на модули, методы и классы. Правильное именование переменных также помогает в управлении сложностью.
Управление сложностью является сущностью компьютерного программирования.
Ниже рассмотрим, как правильно именовать переменные в Python, какую нотацию использовать + кратко рассмотрим стандарт РЕР8.
Допустимые имена переменных в Python
Вы можете придумать любые названия для переменных в Python, но есть несколько правил, которые нужно соблюдать.
Правила для переменных в Python:
Список всех зарезервированных ключевых слов можно посмотреть так:
import keyword print(keyword.kwlist)
Если нарушить правило именования, получим SyntaxError :
3r = 10 print(3r) File «test.py», line 1 3r = 10 ^ SyntaxError: invalid syntax
Нотация в Python: CamelCase или under_score?
Нотация — это соглашение об именовании. Наиболее популярные нотации в программировании — camel case и underscore.
camelCase (еще называется «верблюжья нотация») — это стиль, в котором слова пишутся слитно, а каждое слово начинается с прописной (большой) буквы. Имеется два подвида этого стиля: lowerCamelCase (все слова кроме первого начинаются с прописной буквы) и UpperCamelCase (все слова, в том числе и первое пишутся с большой буквы).
under_score (snake_case) — при использовании этого стиля в качестве разделителя используется символ подчеркивания «_», а все слова начинаются со строчной (маленькой) буквы;
В Python преимущественно используется нотация under_score
Однако under_score — не единственная нотация, рекомендуемая к использованию в Python. Вот гайдлайн по именованию, основанный на рекомендациях Гвидо ван Россума (автора языка Python):
Как выбирать имена для переменных в Python
Основной принцип хорошего именования — имена должны быть содержательными (полностью отражать своё назначение). Перед тем, как дать имя переменной, функции или классу, ответьте на вопросы:
👎 Пример плохого именования:
def area(side1, side2): return side1 * side2 d = area(4, 5)
В данном примере переменная d не обозначает ровным счётом ничего. По названию функции area не понятно, что она делает, какие параметры принимает и что возвращает.
👍 Пример хорошего именования:
def get_rectangle_area(length, width): return length * width area = get_rectangle_area(4, 5)
В примере понятно что делает функция get_rectangle_area (передав длину и ширину, функция вычисляет и возвращает площадь прямоугольника). Результат попадет в переменную area (площадь).
Содержательное имя понятно, легко читается и не требует дополнительных комментариев.
Вот еще несколько рекомендаций по выбору имён в Python:
⚡ Подбирайте имена на английском языке. Не нужно использовать русские имена переменных и писать их транслитом. Для программиста важно знать английский язык.
def proverka_zdorovya(): # плохо pass def health_check(): # хорошо pass
⚡ Для функций используйте глагол (например «купить», «получить», «распечатать»), для переменных, модулей и классов используйте существительное (например «список», «покупатели», «товары»).
Частая ошибок новичков — называть функцию существительным:
def speed_calculator(distance, time): # неправильно (калькулятор скорости) pass def calculate_speed(distance, time): # правильно (рассчитать скорость) pass
⚡ Имена функций должны быть как можно короче. Функция выполняет всего одно действие и именно оно должно отображаться в её имени.
def create_text_utf8_pipe_from_input(): # плохо pass def create_pipe(): # хорошо pass
⚡ Перед именами булевских переменных (и методов, возвращающих тип bool ), добавляйте префикс «is».
def is_goal_state(): # хорошо pass is_active = True # хорошо
⚡ Используйте удобопроизносимые имена. Людям удобно работать со словами. Часть мозга специализируется на обработке слов — нужно использовать эту часть мозга.
# пример плохого именования (имена трудно произносить вслух) class GlobalFRTEV: # плохо def get_any_mdhd(self): # плохо pass def get_any_mdhl(self): # плохо pass def get_any_mdhf(self): # плохо pass
Имена будут использоваться в обсуждении с коллегами. Рассказывать про баг в методе get_any_mdhf класса GlobalFRTEV будет достаточно проблематично.
⚡ Использовать однобуквенные переменные не рекомендуется. Их можно использовать исключительно для локальных переменных в небольших методах.
r = requests.get(‘https://pythonchik.ru’) # плохо response = requests.get(‘https://pythonchik.ru’) # хорошо
⚡ Не нужно разрабатывать и использовать свою систему кодирования имен. Такие имена трудно произносить и в них можно сделать опечатку. К тому же, каждый новый сотрудник должен будет изучать вашу систему кодирования.
tm1_word = «Hello» # плохо
⚡ Также не следует использовать юмор при выборе имени файла. Ведь шутка может быть понятна не всем. Также не рекомендуется использовать каламбуры и сленг.
⚡ Помните, что ваш код будут читать программисты, поэтому используйте слова из профессиональной области, например, названия алгоритмов, паттернов или математические термины. Также полезно использовать слова из предметной области, к которой принадлежит решаемая задача.
💭 Больше полезных сведений о выборе имен идентификаторов и другие советы, которые пригодятся при написании кода, можно найти в книгах:
Именование переменных в PEP8
В стандарте РЕР8 описаны следующие стили именования:
💁♂️ Для удобства, среды разработки (например PyCharm) автоматически проверяют, насколько код соответствует рекомендациям стандарта РЕР8. Если имя идентификатора не будет соответствовать соглашениям, то IDE подчеркнет переменную, а если навести на нее мышку, появится сообщение с подсказкой.
Хороший код документирует сам себя. При правильном именовании, не возникает вопросов по тому, что происходит в отдельных частях кода. И отпадает необходимость писать комментарии к каждой строке.
Чтобы прокачать навык именования переменных, читайте чужой код крупных проектов (например на github). Смотрите, какие имена используют опытные разработчики, анализируйте и применяйте в своих проектах.
Переменные в Python
Переменные — важная часть любого языка программирования. Они позволяют хранить, использовать и передавать данные.
Переменные позволяют не только удобно манипулировать данными, но и разделять их на типы, с которыми можно работать по определённым правилам. В Python они подчиняются концепциям, используемым в других языках программирования, однако они также имеют особенности, например, тип явно не объявляется.
Создание и присвоение значений
Создание переменной в Python 3 отличается от других языков программирования. Её не нужно заранее объявлять, указывать её тип, она создается в момент присваивания значения.
Чтобы создать переменную, используется символ равенства «=». Слева от которого пишут наименование, а справа — значение нужного типа. Пример:
Динамическая типизация
Такое создание переменных возможно благодаря динамической типизации.
Множественное присваивание и обмен значениями
Python позволяет программисту присвоить одно и то же значение нескольким переменным:
Кроме того, в отличие от других языков программирования Python позволяет обменять значения двух переменных —
Такая операция возможна, потому что Python используется кортеж, в который помещает значения, чтобы можно было поменять их местами.
Имена
В именах переменных в Python 3 можно использовать только буквы, цифры и символы подчеркивания. Цифры можно использовать в любой части имени, кроме начала.
И если синтаксис накладывает на программиста мало ограничений, то IT сообщество требует «хороших» имён для переменных:
Для создания хороших имён используются следующие методы:
Зарезервированные имена (ключевые слова)
Вывод в консоль
Чтобы вывести переменную на экран, используют функцию print(). С её помощью можно вывести значение одной или нескольких переменных в форматированном выводе. Есть несколько вариантов синтаксиса вывода:
Пустая переменная
None используется в случаях, когда значение не определено, не существует. И хотя он не эквивалентен какому-либо значению типа bool, строке или числу, он также является объектом.
При необходимости, можно проверить содержимое переменной следующим образом:
Может использоваться, например, когда мы в переменной храним указатель на открытый файл. И когда мы этот файл закрываем, то присваиваем указателю значение None. В дальнейшем можно проверять будет перед записью или чтением данных, является ли переменная пустой.
Области видимости
В Python есть глобальная и локальная область видимости. Объявление переменных в разных областях видимости помогает избежать пересечения имён, открывает программисту новые уровни взаимодействий между ними и делает код более безопасным, делая невозможным несанкционированный доступ к механизмам работы функций.
Глобальная область видимости — это тело исполняемого скрипта. К любой переменной, объявленной в ней, можно получить доступ из любой части программы, даже из другого модуля.
Чтобы получить доступ к глобальной переменной из функции, необходимо использовать ключевое слово global, оно показывает интерпретатору, что нужно использовать находящуюся в глобальной области видимости. Кроме того, если функция не находит в своём теле нужную переменную, она автоматически ищет её в глобальной области видимости скрипта и использует.
Локальная область видимости недоступна для редактирования из вне, любая переменная, объявленная внутри функции будет находиться в локальной области видимости, это позволяет использовать одно и то же имя много раз в одной программе, защитить функцию от ненужных изменений и упростить написание кода.
Удаление
Заключение
Python даёт программисту все необходимое для работы с переменными, он предоставляет и такие инструменты, которых нет в других языках программирования, например, обмен значений.
Python делает работу с переменными очень простой, он позволяет не объявлять их типы, присваивать уже существующей значение другого типа и поддерживает работу с областями видимости.
Как работают переменные в Python
Переменная — это именованная область памяти. После того как вы дали имя области, появляется возможность обращаться к данным, что в ней хранятся.
Каждый элемент данных в Python является объектом определенного типа или класса. Когда, в процессе выполнения программного кода, появляется новое значение, интерпретатор выделяет для него область памяти — то есть создаёт объект определенного типа (число, строка и т.д.). После этого Python записывает в свой внутренний список адрес этого объекта.
Но как теперь получить доступ к созданному объекту? 🤷♀️
Для этого и существуют переменные — они дают возможность удобно работать с объектами используя имена вместо адресов.
Простыми словами переменная в Python — это просто имя, прикрепленное к определенному объекту
a = 123 print(a) > 123 print(type(a)) print(id(a)) 1827204944
🍏 🍊 Приведем простую аналогию: Представьте, что у вас есть много непрозрачных бутылок, а сами вы занимаетесь производством фруктовых соков. Однажды вы выжали фрукты и в один сосуд налили апельсиновый сок, а во второй — яблочный. После этого ёмкости были запечатаны. Резонный вопрос: как теперь выяснить содержимое отдельно взятой бутылки?
Ответ: предварительно их подписать. Сделав это, вы будете точно знать, что находится в бутылках, а значит, сможете производить с ними дальнейшие операции: назначать цену, сортировать, отправлять на продажу и так далее.
Итак, ваш фреш-бизнес разросся, и для хранения соков пришлось арендовать склад, где каждая бутылка находится строго на своём месте. Теперь у вас есть ещё и специальные карточки: на каждой из них записаны наименование продукта и адрес этого продукта на складе. Когда требуется достать конкретную ёмкость с соком, вы смотрите на карточку, читаете номер ячейки, а затем идёте к обозначенному месту на складе и берёте оттуда нужную бутылку.
Переменные, объекты и ссылки
Для понимания работы переменных, необходимо разобрать, что происходит, когда вы создаете новую переменную и присваиваете ей значение?
В данном примере происходит следующее:
Важно : переменная в Python не хранит значение напрямую — она хранит лишь ссылку на объект
Теперь посмотрим что произойдет, если одной переменой присвоить другую переменную:
b = a print(id(a)) > 1827204576 print(id(b)) > 1827204576
Предположим, что в какой-то момент вы захотели поменять значение переменной b :
b = 500 print(id(a)) > 1827204576 print(id(b)) > 56754272
В данном примере Python создал новый объект типа int, и теперь переменная b ссылается на новый объект.
Рассмотрим еще один пример:
b = «tree» print(id(b)) > 54134048
b = «tree», переменная b теперь ссылается на новый объект строкового типа
На объект типа int со значением 500 больше никто не ссылается. Следовательно, он больше не доступен и будет удален сборщиком мусора (тем самым освободим немного памяти).
Идентификатор объекта (Object Identity)
Идентификатор объекта — это адрес объекта в памяти.
a = b = 1 print(id(a)) > 1593636784 print(id(b)) > 1593636784 print(id(1)) > 1593636784
Видно, что объект здесь всего один. А a и b — по-разному названные переменные, которые на него ссылаются. Проверить равенство идентификаторов можно с помощью оператора is :
Работа с переменными
Именование переменных
В языке Python имя переменной должно состоять только из цифр, букв и знаков подчеркивания. И не должно начинаться с цифры.
Это жёсткий внутренний закон языка, помимо которого есть свод более мягких, но не менее важных правил, и они говорят нам:
Список зарезервированных слов
В каждом языке есть зарезервированные слова. Такие слова имеют специальное значение, и поэтому запрещены для использования в качестве имён переменных. Вот список зарезервированных слов для Python:
False, class, finally, is, return, None, continue, for, lambda, try, True, def, from, nonlocal, whileand, del, global, not, with, as, elif, if, or, yield, assert, else, import, pass, break, except, in, raise.
Как объявить переменную
В Питоне не требуется специального объявления переменных. В момент присваивания значения, объявление происходит автоматически. А присваивание выглядит так:
Импорт переменной в Python
Чтобы импортировать переменную из другого файла, используем в начале текущего файла следующую конструкцию:
# файл main.py space_ship = ‘Millenium Falcon’ # файл second.py from main import space_ship print(space_ship) > Millenium Falcon
Проверка существования переменной
Чтобы выяснить, есть ли в программе переменная (например cat ), ищем вхождения строки с её названием в словарях, возвращаемых функциями locals() (локальная видимость) и globals() (глобальная видимость):
if «cat» in locals(): # … if «cat» in globals(): # …
Удаление переменной
Переменная удаляется, если передать её в качестве аргумента во встроенную функцию del() :
please_dont = ‘alive’ del(please_dont) print(please_dont) > Traceback (most recent call last): print(please_dont) NameError: name ‘please_dont’ is not defined
Что означает звездочка перед переменной?
Символ * перед именем переменной может означать несколько вещей.
status = [‘open’, ‘close’] print(status) > [‘open’, ‘close’] print(*status) > open close
def summer(*terms): sum = 0 for term in terms: sum = sum + term return sum print(summer(2)) > 2 print(summer(3, 3)) > 6 print(summer(4, 43, 1)) > 48
def setCreator(some_list): return <*some_list[1:]>weapons = [‘bow’, ‘pike’, ‘sword’, ‘dagger’] print(setCreator(weapons)) > <'dagger', 'pike', 'sword'>print(type(setCreator(weapons))) >
Область видимости: локальные и глобальные переменные
Сначала терминология. Область видимости или пространство имен — это место в программном коде, где переменной было присвоено значение.
Существуют три разные области видимости:
2 Нелокальная. Если внутри функции определена другая функция, то переменная внутри внешнего def будет нелокальной для def внутреннего. То есть сделать вот так не получится:
Поэтому для корректной работы нужно использовать ключевое слово nonlocal :
num = 42 def globalExample(n): res = n + num return res print(globalExample(1)) > 43
Статические переменные
Статическая переменная сохраняет свое значение между вызовами функций.
Звучит очень похоже на определение глобальной переменной, однако в том-то и дело, что статическая переменная может быть и локальной.
Самих по себе статических переменных в Питоне нет