что такое переменная в программировании 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
Статические переменные
Статическая переменная сохраняет свое значение между вызовами функций.
Звучит очень похоже на определение глобальной переменной, однако в том-то и дело, что статическая переменная может быть и локальной.
Самих по себе статических переменных в Питоне нет
Переменные
В Python нам необязательно указывать тип переменной, поскольку Python является языком с динамической типизацией.
Имена переменных могут состоять как из букв, так и из цифр, но они должны начинаться с буквы или символа подчеркивания.
Именование идентификаторов
Переменные являются примером идентификаторов. Правила присвоения имени идентификатору приведены ниже.
Объявление переменных и присвоение значений
Python не обязывает нас объявлять переменную перед ее использованием в приложении. Он позволяет нам создать переменную в нужный момент.
В Python нам не нужно объявлять переменную в явном виде. Когда мы присваиваем переменной какое-либо значение, эта переменная объявляется автоматически.
Оператор = используется для присвоения значения переменной.
Ссылки на объекты
Необходимо понять, как работает интерпретатор Python, когда мы объявляем переменную. Процесс обращения с переменными несколько отличается от многих других языков программирования.
Давайте разберем следующий пример
На изображении выше переменная a относится к целочисленному объекту.
Python эффективно управляет памятью, если мы присваиваем одной и той же переменной два разных значения.
Идентификация объекта
140734982691168 140734982691168 2822056960944
Имена переменных в python
Мы уже обсуждали, как объявить допустимую переменную. Имена переменных могут быть любой длины, могут содержать прописные и строчные буквы (от A до Z, от a до z), цифры (0-9) и символ подчеркивания(_). Рассмотрим следующий пример допустимых имен переменных.
Рассмотрим следующие имена допустимых переменных.
Описательные имена переменных, состоящие из нескольких слов могут быть определены следующим способом.
Множественная инициализация переменных в Python
Python позволяет присваивать значение нескольким переменным в одном операторе, что также известно как множественное присваивание.
Мы можем применять множественные присваивания двумя способами: либо присваивая одно значение нескольким переменным, либо присваивая несколько значений нескольким переменным. Рассмотрим следующий пример.
Значения будут присваиваться в том порядке, в котором появляются переменные.
Типы переменных Python
Локальные переменные в Python
В приведенном выше коде мы объявили функцию add() и назначили несколько переменных внутри функции. Эти переменные будут называться локальными переменными, которые имеют область видимости только внутри функции. Если мы попытаемся использовать их вне функции, то получим следующую ошибку.
The sum is: 50 print(a) NameError: name ‘a’ is not defined
Глобальные переменные в Python
Глобальные переменные могут использоваться во всей программе, и область их действия распространяется на всю программу. Мы можем использовать глобальные переменные внутри или вне функции.
101 Welcome To Javatpoint Welcome To Javatpoint
В приведенном выше коде мы объявляем глобальную переменную x и присваиваем ей значение. Затем мы определили функцию и обратились к объявленной переменной с помощью ключевого слова global внутри функции. Теперь мы можем изменить ее значение. Затем мы присвоили переменной x новое строковое значение.
Удаление переменной в Python
6 Traceback (most recent call last): File «C:/Users/DEVANSH SHARMA/PycharmProjects/Hello/multiprocessing.py», line 389, in print(x) NameError: name ‘x’ is not defined
Максимально возможное значение целого числа в Python
В отличие от других языков программирования, в Python нет типов данных long int или float. Он рассматривает все целочисленные значения как тип данных int. Здесь возникает вопрос. Какое максимальное значение может хранить переменная в Python? Рассмотрим следующий пример.
В Python нет специального типа данных для хранения больших чисел.
Вывод одной или нескольких переменных в Python
Python переменные
Оглавление Присвоение переменной Типы переменных в Python Ссылки на объекты Идентичность объекта Имена переменных Зарезервированные слова (ключевые слова) Вывод Вот…
Вот что вы узнаете из этого руководства: вы узнаете, как каждый элемент данных в программе Python может быть описан абстрактным термином-объектом, и вы узнаете, как управлять
Присвоение переменной
Думайте о переменной как об имени, прикрепленном к определенному объекту. В Python переменные не нужно объявлять или определять заранее, как это имеет место во многих других языках программирования. Чтобы создать переменную, вы просто присваиваете ей значение, а затем начинаете использовать. Присваивание выполняется с помощью единственного знака равенства (=):
Это читается или интерпретируется как «n присвоено значение 300». Как только это будет сделано, n можно использовать в операторе или выражении, и его значение будет заменено:
Так же, как буквальное значение может отображаться непосредственно из приглашения интерпретатора в сеансе REPL без необходимости print(), переменная может:
Позже, если вы измените значение n и используете его снова, вместо него будет подставлено новое значение:
Python также позволяет назначать цепочки, что позволяет назначать одно и то же значение нескольким переменным одновременно:
Цепное присвоение, приведенное выше, одновременно присваивает 300 переменных a, b и c.
Типы переменных в Python
Во многих языках программирования переменные имеют статическую типизацию. Это означает, что переменная изначально объявляется как имеющая определенный тип данных, и любое значение, присвоенное ей во время ее существования, всегда должно иметь этот тип.
Это ограничение не распространяется на переменные в Python. В Python переменной может быть присвоено значение одного типа, а затем повторно присвоено значение другого типа:
Ссылки на объекты
Что на самом деле происходит, когда вы присваиваете переменную? Это важный вопрос для Python, потому что ответ несколько отличается от того, что вы найдете во многих других языках программирования.
Python – это весьма объектно-ориентированный язык. Фактически, практически каждый элемент данных в программе Python является объектом определенного типа или класса.
Рассмотрим этот код:
ри представлении оператора print (300) интерпретатор выполняет следующие действия:
Вы можете видеть, что целочисленный объект создается с помощью встроенной функции type():
Переменная Python – это символическое имя, которое является ссылкой или указателем на объект. После того, как объект назначен переменной, вы можете ссылаться на объект по этому имени. Но сами данные все еще содержатся в объекте.
Это присвоение создает целочисленный объект со значением 300 и присваивает переменной n, указывающей на этот объект.
Следующий код проверяет, что n указывает на целочисленный объект:
Теперь рассмотрим следующее утверждение:
Что происходит, когда он выполняется? Python не создает другой объект. Он просто создает новое символическое имя или ссылку, m, которая указывает на тот же объект, на который указывает n.
Множественные ссылки на один объект
Далее предположим, что вы делаете это:
Теперь Python создает новый целочисленный объект со значением 400, и m становится ссылкой на него.
Ссылки на отдельные объекты
Наконец, предположим, что этот оператор выполняется следующим образом:
Теперь Python создает строковый объект со значением «foo» и делает ссылку на n.
Ссылка на целочисленный объект 300 больше не существует. Он потерян, и к нему невозможно получить доступ.
В руководствах этой серии иногда упоминается время жизни объекта. Жизнь объекта начинается с момента его создания, когда создается по крайней мере одна ссылка на него. Во время существования объекта могут быть созданы дополнительные ссылки на него, как вы видели выше, а также ссылки на него могут быть удалены. Объект как бы остается в живых, пока на него есть хотя бы одна ссылка.
Когда количество ссылок на объект падает до нуля, он становится недоступным. На этом его срок службы закончился. Python в конечном итоге заметит, что он недоступен, и освободит выделенную память, чтобы ее можно было использовать для чего-то другого. На компьютерном жаргоне этот процесс называется сборкой мусора.
Идентичность объекта
В Python каждому создаваемому объекту присваивается номер, который однозначно его идентифицирует. Гарантируется, что никакие два объекта не будут иметь одинаковый идентификатор в течение любого периода, в течение которого их время жизни перекрывается. Как только счетчик ссылок на объект упадет до нуля и он будет обработан сборщиком мусора, как это произошло с объектом 300 выше, его идентификационный номер становится доступным и может использоваться снова.
Глубокое погружение: кэширование малых целочисленных значений
Из того, что вы теперь знаете о назначении переменных и ссылках на объекты в Python, вероятно, вас не удивит следующее:
Здесь m и n по отдельности назначаются целочисленным объектам, имеющим значение 30. Но в этом случае id (m) и id (n) идентичны!
В целях оптимизации интерпретатор создает объекты для целых чисел в диапазоне [-5, 256] при запуске, а затем повторно использует их во время выполнения программы. Таким образом, когда вы назначаете отдельные переменные целочисленному значению в этом диапазоне, они фактически будут ссылаться на один и тот же объект.
Имена переменных
В примерах, которые вы видели до сих пор, использовались короткие, лаконичные имена переменных, такие как m и n. Но имена переменных могут быть более подробными. Фактически, это обычно полезно, потому что это делает назначение переменной более очевидным с первого взгляда.
Официально имена переменных в Python могут быть любой длины и могут состоять из прописных и строчных букв (A-Z, a-z), цифр (0-9) и символа подчеркивания (_). Дополнительным ограничением является то, что, хотя имя переменной может содержать цифры, первый символ имени переменной не может быть цифрой.
Примечание. Одним из дополнений к Python 3 была полная поддержка Unicode, которая также позволяет использовать символы Unicode в имени переменной. Вы узнаете о Unicode более подробно в одном из будущих руководств.
Например, все следующие допустимые имена переменных:
Но это не так, потому что имя переменной не может начинаться с цифры:
Обратите внимание, что регистр имеет значение. Строчные и прописные буквы – это не одно и то же. Также важно использование символа подчеркивания. Каждое из следующего определяет разные переменные:
Ничто не мешает вам создать две разные переменные в одной программе под названием age и Age, или, если на то пошло, agE. Но, вероятно, это опрометчиво. Это, безусловно, могло бы сбить с толку любого, кто пытается прочитать ваш код, и даже вас самого, после того, как вы какое-то время отдалились от него.
Целесообразно дать переменной имя, которое будет достаточно описательным, чтобы было понятно, для чего она используется. Например, предположим, что вы подсчитываете количество людей, окончивших колледж. Вы могли бы выбрать любое из следующего:
Все они, вероятно, лучший выбор, чем n, ncg и т.п. По крайней мере, вы можете сказать по имени, что должно представлять значение переменной.
С другой стороны, не обязательно все они одинаково удобочитаемы. Как и во многих других случаях, это вопрос личных предпочтений, но большинство людей сочтут, что первые два примера, в которых все буквы сложены вместе, труднее читать, особенно букву, написанную заглавными буквами. Наиболее часто используемые методы построения имени переменной из нескольких слов – это последние три примера:
Программисты горячо, с удивительной страстью спорят, что из них предпочтительнее. За всех них можно привести достойные аргументы. Используйте тот из трех, который вам больше всего нравится. Выберите один и используйте его постоянно.
Позже вы увидите, что не только переменным можно давать имена. Вы также можете давать имена функциям, классам, модулям и так далее. Правила, применяемые к именам переменных, также применяются к идентификаторам, более общему термину для имен, присваиваемых программным объектам.
Руководство по стилю кода Python, также известное как PEP 8, содержит соглашения об именах, в которых перечислены рекомендуемые стандарты для имен различных типов объектов. PEP 8 включает следующие рекомендации:
Зарезервированные слова (ключевые слова)
Есть еще одно ограничение на имена идентификаторов. В языке Python зарезервирован небольшой набор ключевых слов, обозначающих специальные языковые функции. Ни один объект не может иметь то же имя, что и зарезервированное слово.
В Python 3.6 есть 33 зарезервированных ключевых слова:
Python Keywords | |||
---|---|---|---|
False | def | if | raise |
None | del | import | return |
True | elif | in | try |
and | else | is | while |
as | except | lambda | with |
assert | finally | nonlocal | yield |
break | for | not | |
class | from | or | |
continue | global | pass |
Вы можете просмотреть этот список в любое время, набрав help («ключевые слова») интерпретатору Python. Зарезервированные слова чувствительны к регистру и должны использоваться точно так, как показано. Все они полностью строчные, за исключением False, None и True.
Попытка создать переменную с тем же именем, что и любое зарезервированное слово, приводит к ошибке:
Вывод
В этом руководстве были рассмотрены основы переменных Python, включая ссылки на объекты и их идентификационные данные, а также именование идентификаторов Python.
Теперь вы хорошо разбираетесь в некоторых типах данных Python и знаете, как создавать переменные, которые ссылаются на объекты этих типов.
Переменные в Python
Не один язык программирования не может обойтись без переменных и Python здесь не исключение. Переменная в программировании – это именованная область памяти, предназначенная для хранения значения.
Проще говоря, переменную можно представить в виде коробки, куда можно что-то положить и впоследствии заменить, так вот это что-то и называется значением переменной. Что же мы подразумеваем под фразой значение переменной?
Значения переменной в Python
Например, вам надо выполнить какие-то математические вычисления и у вас есть два числа: 70 и 30. Чтобы каждый раз не вводить эти числа, вы положите их в переменные: a и b, которые будете подставлять вместо чисел. Получается, что числа – это значения переменных.
Переменная может хранить не только число, но и целое выражение.
Вывод результата значения переменной x:
А какие ещё бывают значения? Значения переменных делятся по типу данных, с левой стороны – название типа данных.
Объявление переменных в Python
Объявить или создать (что одно и то же) переменную очень просто. Нужно придумать ей имя и присвоить значение. В программировании знак равно (=) обозначает оператор присваивания. В переменную x мы положили число 5 и тем самым объявили, что у нас есть переменная x. Таким образом, мы присвоили значение переменной.
x=5 // создание переменной
print(x)
x = 5
Переменную можно изменить, положив в неё новое значение. При следующем присваивании, значение переменной заменяется.
x=10 // изменение значения переменной
print(x)
x = 10
Можно создавать сколько угодно разных переменных.
Имена переменных в Python
В имени переменной может быть любое количество символов. Имя переменной может начинаться только с буквы или с нижнего подчеркивания. Никаких чисел в начале имени переменной быть не должно. Имена переменным следует давать осмысленные. Если вы присваиваете переменной значение в виде номера телефона, тогда и называйте переменную понятным словом phone. Имя переменной не может содержать ключевые слова (зарезервированные) языка Python.
Список ключевых слов:
Имя переменной может состоять из нескольких слов. В языках программирования принято разделять слова нижним подчеркиванием или все слова, кроме первого, начинать с буквы в верхнем регистре.
Типы переменных в Python
Переменная в Python хранит в себе не само значение, а лишь ссылку на него. Поэтому легко можно заменять одно значение переменной на другое. Например, в переменной a хранилось число 10, мы присвоили ей значение другого типа – строку ‘I love Python’.
a=10
a=’I love Python’
Старая ссылка исчезнет, а новая появится. Одна и та же переменная в Python может хранить в себе значения разных типов:
Это отличительная особенность пайтона от других языков программирования, которая называется динамической типизацией. Тип данных переменной зависит, от того какое значение ей присвоили.
Как узнать тип значения переменной?
Мы хотим знать, какой тип значения хранит переменная. Нужно написать ключевое слово type, затем в круглых скобочках указать имя переменной login. Пайтон выведет результат str. Это значит, что переменная хранит строковое значение.
Тип значения переменной целое число:
password=1234
type (password)
Тип значения переменной вещественное число:
Заключение
Если вы решили освоить один из наиболее популярных языков программирования – Python и хотите изучить его в кратчайшие сроки. Я могу рекомендовать вам мой видеокурс: «Программирование на Python с Нуля до Гуру». Наверняка вы спросите: «Кто я такой, чтобы вы приобрели именно мой видеокурс?» Перейдите по этой ссылке и вы получите исчерпывающий ответ.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.