Переменные в Python
Переменные — важная часть любого языка программирования. Они позволяют хранить, использовать и передавать данные.
Переменные позволяют не только удобно манипулировать данными, но и разделять их на типы, с которыми можно работать по определённым правилам. В Python они подчиняются концепциям, используемым в других языках программирования, однако они также имеют особенности, например, тип явно не объявляется.
Создание и присвоение значений
Создание переменной в Python 3 отличается от других языков программирования. Её не нужно заранее объявлять, указывать её тип, она создается в момент присваивания значения.
Чтобы создать переменную, используется символ равенства «=». Слева от которого пишут наименование, а справа — значение нужного типа. Пример:
name = "Александр" # Типа str (строка) age = 15 # Типа int (целое число)
Динамическая типизация
Такое создание переменных возможно благодаря динамической типизации.
Переменную не нужно объявлять заранее, потому что тип определяется по присвоенному значению, кроме того, при повторном присваивании значения другого типа, не нужно переопределять тип.
Множественное присваивание и обмен значениями
Python позволяет программисту присвоить одно и то же значение нескольким переменным:
a = b = c = 5 # Все (a, b и с) хранят значение 5
Кроме того, в отличие от других языков программирования Python позволяет обменять значения двух переменных —
a = 5, b = 3, с = 7 a, b = b, a # Теперь a = 3, а b = 5 a, b, c = c, a, b # Можно обменивать значения не только для двух
Такая операция возможна, потому что Python используется кортеж, в который помещает значения, чтобы можно было поменять их местами.
Если использовать классический способ, применяемый в других языках, необходимо вводить дополнительную переменную, которая по сути является буфером для временного хранения значений.
Имена
В именах переменных в Python 3 можно использовать только буквы, цифры и символы подчеркивания. Цифры можно использовать в любой части имени, кроме начала.
И если синтаксис накладывает на программиста мало ограничений, то IT сообщество требует «хороших» имён для переменных:
- Имя должно описывать назначение. Так как код может перечитываться и изменяться множество раз, названия переменных должны быть такими, чтобы по ним можно было понять, что она хранит и для чего используется.
- Не нужно использовать транслит. Если программист хочет создать переменную, хранящую возраст программиста, он должен писать не «vozrast», а «age». Это обусловлено тем, что английский — самый используемый язык в IT, название на английском поймут все, в любом случае, можно воспользоваться переводчиком.
- Приемлемая длина. Имя должно не только отражать суть, но и быть коротким, слишком длинные названия увеличивают объем кода и ухудшают его восприятие.
Для создания хороших имён используются следующие методы:
- CamelCase (верблюжий регистр): первое слово начинается с маленькой буквы, а следующие за ним с большой. В Python CamelCase принято использовать для имён классов. Например: WorkersOfFactory .
- Snake Case: имя состоит из слов, разделенных символом подчеркивания «_», каждое слово пишут с маленькой буквы, например, hello_world . В Python Snake Case используется для имён функций, модулей и переменных. Такой стиль записи воспринимается лучше, чем CamelCase. Кроме того, он имеет несколько вариаций, которые не используются в Python: таких как запись через дефис «-» (kind-of-animals) и запись каждого слова с большой буквы (Sorted-Array-Of-Names).
Зарезервированные имена (ключевые слова)
Нельзя назвать переменную именем, которое уже зарезервировано, как ключевое слово. В Python есть около 33 зарезервированных имён: def, True, False, break и так далее.
Полный список ключевых слов можно посмотреть, набрав в интерпретаторе Python команду: help(«keywords») .
Вывод в консоль
Чтобы вывести переменную на экран, используют функцию print(). С её помощью можно вывести значение одной или нескольких переменных в форматированном выводе. Есть несколько вариантов синтаксиса вывода:
- print(«<> — число, <> — слово».format(number, word)). Например, переменная number хранит значение 5, а word хранит «пять», тогда на экран выведется: «5 — число, пять — слово».
- Можно обойтись без использования .format, достаточно писать составные части вывода через запятую: print(number, » — число», word, » — слово»).
Вывод обоих способов будет одинаковым, кроме того, не нужно указывать тип переменной, интерпретатор определит его сам.
Пустая переменная
Переменная — это ссылка на какой-то объект, она не может не содержать совсем ничего. Если программист хочет сделать его пустой (условно пустой), он присваивает ей значение None .
None используется в случаях, когда значение не определено, не существует. И хотя он не эквивалентен какому-либо значению типа bool, строке или числу, он также является объектом.
При необходимости, можно проверить содержимое переменной следующим образом:
a = None if a is None: print('значение равно None') else: print('другое значение')
Может использоваться, например, когда мы в переменной храним указатель на открытый файл. И когда мы этот файл закрываем, то присваиваем указателю значение None. В дальнейшем можно проверять будет перед записью или чтением данных, является ли переменная пустой.
Области видимости
В Python есть глобальная и локальная область видимости. Объявление переменных в разных областях видимости помогает избежать пересечения имён, открывает программисту новые уровни взаимодействий между ними и делает код более безопасным, делая невозможным несанкционированный доступ к механизмам работы функций.
Глобальная область видимости — это тело исполняемого скрипта. К любой переменной, объявленной в ней, можно получить доступ из любой части программы, даже из другого модуля.
Чтобы получить доступ к глобальной переменной из функции, необходимо использовать ключевое слово global, оно показывает интерпретатору, что нужно использовать находящуюся в глобальной области видимости. Кроме того, если функция не находит в своём теле нужную переменную, она автоматически ищет её в глобальной области видимости скрипта и использует.
Локальная область видимости недоступна для редактирования из вне, любая переменная, объявленная внутри функции будет находиться в локальной области видимости, это позволяет использовать одно и то же имя много раз в одной программе, защитить функцию от ненужных изменений и упростить написание кода.
В 3 версии Python было добавлено ключевое слово nonlocal . Оно позволяет получить доступ к переменной из локальной области видимости функции, при условии, что программист пытается получить доступ из другой вложенной функции. Пример:
def count(): n = 0 def inc(): n += 1 # Вызовется ошибка, функция не может получить доступ nonlocal n n += 1 # К n из внешней функции прибавится 1 return n inc() return n # будет равна 1 (если закомментировать строку с ошибкой)
Удаление
Для удаления переменной в Python 3 можно воспользоваться функцией del() , в качестве аргумента в которую нужно передать её имя. Пример:
a = 5 del(a) print(a) # Произойдёт исключение
Заключение
Python даёт программисту все необходимое для работы с переменными, он предоставляет и такие инструменты, которых нет в других языках программирования, например, обмен значений.
Python делает работу с переменными очень простой, он позволяет не объявлять их типы, присваивать уже существующей значение другого типа и поддерживает работу с областями видимости.
Переменные
Переменная — это имя, которое используется для ссылки на область памяти. Переменная Python также известна как идентификатор и используется для хранения значения.
В Python нам необязательно указывать тип переменной, поскольку Python является языком с динамической типизацией.
Имена переменных могут состоять как из букв, так и из цифр, но они должны начинаться с буквы или символа подчеркивания.
Рекомендуется использовать строчные буквы для имени переменной. Rahul и rahul — это две разные переменные, т.к. имена переменных регистрозависимы.
Именование идентификаторов
Переменные являются примером идентификаторов. Правила присвоения имени идентификатору приведены ниже.
- Первый символ переменной должен быть буквой или символом подчеркивания ( _ ).
- Все символы, кроме первого, могут быть: строчными (a-z), прописными (A-Z), подчеркиванием или цифрами (0-9).
- Имя идентификатора не должно содержать пробелов или специальных символов (!, @, #, %, ^, &, *).
- Имя идентификатора не должно быть похоже ни на одно ключевое слово, определенное в языке.
- Имена идентификаторов чувствительны к регистру; например, myname и MyName — не одно и то же.
- Примеры допустимых идентификаторов: a123, _n, n_9 и т.д.
- Примеры недопустимых идентификаторов: 1a, n%4, n9 и т.д.
Объявление переменных и присвоение значений
Python не обязывает нас объявлять переменную перед ее использованием в приложении. Он позволяет нам создать переменную в нужный момент.
В Python нам не нужно объявлять переменную в явном виде. Когда мы присваиваем переменной какое-либо значение, эта переменная объявляется автоматически.
Оператор = используется для присвоения значения переменной.
Ссылки на объекты
Необходимо понять, как работает интерпретатор Python, когда мы объявляем переменную. Процесс обращения с переменными несколько отличается от многих других языков программирования.
Python — объектно-ориентированный язык программирования, поэтому каждый элемент данных принадлежит к определенному типу класса. Рассмотрим следующий пример.
print("John")
В приведенном выше операторе print мы создали строковый объект. Давайте проверим его тип с помощью встроенной в Python функции type() .
type("John")
В Python переменные — это символическое имя, которое является ссылкой или указателем на объект. Переменные используются для обозначения объектов этим именем.
Давайте разберем следующий пример
a = 50

На изображении выше переменная a относится к целочисленному объекту.
Предположим, что мы присвоим целочисленное значение 50 новой переменной b .
a = 50 b = a

Переменная b ссылается на тот же объект, на который указывает a , потому что Python не создает другой объект.
Давайте присвоим новое значение b . Теперь обе переменные будут ссылаться на разные объекты.
a = 50 b = 100

Python эффективно управляет памятью, если мы присваиваем одной и той же переменной два разных значения.
Идентификация объекта
В Python каждый созданный объект идентифицируется уникально. Python гарантирует, что никакие два объекта не будут иметь одинаковый идентификатор. Для определения идентификатора объекта используется встроенная функция id() . Рассмотрим следующий пример.
a = 50 b = a print(id(a)) print(id(b)) # Reassigned variable a a = 500 print(id(a))
140734982691168 140734982691168 2822056960944
Мы присвоили b = a , a и b указывают на один и тот же объект. Когда мы проверили функцией id() , она вернула то же самое число. Мы изменили значение a на 500 ; затем он сослался на новый идентификатор объекта.
Имена переменных в python
Мы уже обсуждали, как объявить допустимую переменную. Имена переменных могут быть любой длины, могут содержать прописные и строчные буквы (от A до Z, от a до z), цифры (0-9) и символ подчеркивания(_). Рассмотрим следующий пример допустимых имен переменных.
name = "Devansh" age = 20 marks = 80.50 print(name) print(age) print(marks)
Рассмотрим следующие имена допустимых переменных.
name = "A" Name = "B" naMe = "C" NAME = "D" n_a_m_e = "E" _name = "F" name_ = "G" _name_ = "H" na56me = "I" print(name,Name,naMe,NAME,n_a_m_e, NAME, n_a_m_e, _name, name_,_name, na56me)
В приведенном выше примере мы объявили несколько допустимых имен переменных, таких как name, name , и т.д. Но это не рекомендуется, так как при чтении кода это может привести к путанице. Имя переменной должно быть описательным, чтобы сделать код более читабельным.
Описательные имена переменных, состоящие из нескольких слов могут быть определены следующим способом.
- Camel Case — В верблюжьем регистре каждое слово или аббревиатура в середине начинается с заглавной буквы. Не допускается вмешательство пробелов. Например — nameOfStudent , valueOfVaraible и т.д.
- Pascal Case — То же самое, что и верблюжий регистр, но здесь первое слово также является заглавным. Например — NameOfStudent и т.д.
- Snake Case — В змеином регистре слова разделяются подчеркиванием. Например — name_of_student и т.д.
Множественная инициализация переменных в Python
Python позволяет присваивать значение нескольким переменным в одном операторе, что также известно как множественное присваивание.
Мы можем применять множественные присваивания двумя способами: либо присваивая одно значение нескольким переменным, либо присваивая несколько значений нескольким переменным. Рассмотрим следующий пример.
- Присвоение одного значения нескольким переменным
x=y=z=50 print(x) print(y) print(z)
Значения будут присваиваться в том порядке, в котором появляются переменные.
Типы переменных Python
В Python существует два типа переменных — локальная переменная и глобальная переменная.
Локальные переменные в Python
Локальные переменные — это переменные, объявленные внутри функции и имеющие область видимости в пределах функции. Давайте разберем следующий пример.
# Declaring a function def add(): # Defining local variables. a = 20 b = 30 c = a + b print("The sum is:", c) # Calling a function add()
В приведенном выше коде мы объявили функцию add() и назначили несколько переменных внутри функции. Эти переменные будут называться локальными переменными, которые имеют область видимости только внутри функции. Если мы попытаемся использовать их вне функции, то получим следующую ошибку.
add() # Accessing local variable outside the function print(a)
The sum is: 50 print(a) NameError: name ‘a’ is not defined
Мы попытались использовать локальную переменную вне ее области видимости; это вызвало ошибку NameError .
Глобальные переменные в Python
Глобальные переменные могут использоваться во всей программе, и область их действия распространяется на всю программу. Мы можем использовать глобальные переменные внутри или вне функции.
Переменная, объявленная вне функции, по умолчанию является глобальной переменной. Python предоставляет ключевое слово global для использования глобальной переменной внутри функции. Если мы не используем ключевое слово global , функция рассматривает ее как локальную переменную. Давайте разберем следующий пример.
# Declare a variable and initialize it x = 101 # Global variable in function def mainFunction(): # printing a global variable global x print(x) # modifying a global variable x = 'Welcome To Javatpoint' print(x) mainFunction() print(x)
101 Welcome To Javatpoint Welcome To Javatpoint
В приведенном выше коде мы объявляем глобальную переменную x и присваиваем ей значение. Затем мы определили функцию и обратились к объявленной переменной с помощью ключевого слова global внутри функции. Теперь мы можем изменить ее значение. Затем мы присвоили переменной x новое строковое значение.
Теперь мы вызвали функцию и вывели значение переменной x . Она вывела только что присвоенное значение.
Удаление переменной в Python
Мы можем удалить переменную с помощью ключевого слова del . Синтаксис приведен ниже.
В следующем примере мы создаем переменную x и присваиваем ей значение. Мы удалили переменную x , и при печати получаем ошибку variable x is not defined. Переменная x больше не будет использоваться в будущем.
# Assigning a value to x x = 6 print(x) # deleting a variable. del x print(x)
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? Рассмотрим следующий пример.
# A Python program to display that we can store # large numbers in Python a = 10000000000000000000000000000000000000000000 a = a + 1 print(type(a)) print (a)
Как видно из примера выше, мы присвоили переменной x большое целочисленное значение и проверили его тип. Он вывел class , а не long int . Следовательно, число не ограничено битами, и мы можем расширять его до предела нашей памяти.
В Python нет специального типа данных для хранения больших чисел.
Вывод одной или нескольких переменных в Python
Мы можем печатать несколько переменных в одном операторе print . Ниже приведены примеры печати одного и нескольких значений.
Пример — 1 (печать одной переменной)
# printing single value a = 5 print(a) print((a))
Пример — 2 (Печать нескольких переменных)
a = 5 b = 6 # printing multiple variables print(a,b) # separate the variables by the comma Print(1, 2, 3, 4, 5, 6, 7, 8)
Как в питоне объявить переменную без значения
Переменные предназначены для хранения данных. Название переменной в Python должно начинаться с алфавитного символа или со знака подчеркивания и может содержать алфавитно-цифровые символы и знак подчеркивания. И кроме того, название переменной не должно совпадать с названием ключевых слов языка Python. Ключевых слов не так много, их легко запомнить:
False await else import pass None break except in raise True class finally is return and continue for lambda try as def from nonlocal while assert del global not with async elif if or yield
Например, создадим переменную:
name = "Tom"
Здесь определена переменная name , которая хранит строку «Tom».
В пайтоне применяется два типа наименования переменных: camel case и underscore notation .
Camel case подразумевает, что каждое новое подслово в наименовании переменной начинается с большой буквы. Например:
userName = "Tom"
Underscore notation подразумевает, что подслова в наименовании переменной разделяются знаком подчеркивания. Например:
user_name = "Tom"
И также надо учитывать регистрозависимость, поэтому переменные name и Name будут представлять разные объекты.
# две разные переменные name = "Tom" Name = "Tom"
Определив переменную, мы можем использовать в программе. Например, попытаться вывести ее содержимое на консоль с помощью встроенной функции print :
name = "Tom" # определение переменной name print(name) # вывод значения переменной name на консоль
Например, определение и применение переменной в среде PyCharm:

Отличительной особенностью переменной является то, что мы можем менять ее значение в течение работы программы:
name = "Tom" # переменной name равна "Tom" print(name) # выводит: Tom name = "Bob" # меняем значение на "Bob" print(name) # выводит: Bob
Типы данных
Переменная хранит данные одного из типов данных. В Python существует множество различных типов данных. В данном случае рассмотрим только самые базовые типы: bool , int , float , complex и str .
Логические значения
Тип bool представляет два логических значения: True (верно, истина) или False (неверно, ложь). Значение True служит для того, чтобы показать, что что-то истинно. Тогда как значение False , наоборот, показывает, что что-то ложно. Пример переменных данного типа:
isMarried = False print(isMarried) # False isAlive = True print(isAlive) # True
Целые числа
Тип int представляет целое число, например, 1, 4, 8, 50. Пример
age = 21 print("Возраст:", age) # Возраст: 21 count = 15 print("Количество:", count) # Количество: 15
По умолчанию стандартные числа расцениваются как числа в десятичной системе. Но Python также поддерживает числа в двоичной, восьмеричной и шестнадцатеричной системах.
Для указания, что число представляет двоичную систему, перед числом ставится префикс 0b :
a = 0b11 b = 0b1011 c = 0b100001 print(a) # 3 в десятичной системе print(b) # 11 в десятичной системе print(c) # 33 в десятичной системе
Для указания, что число представляет восьмеричную систему, перед числом ставится префикс 0o :
a = 0o7 b = 0o11 c = 0o17 print(a) # 7 в десятичной системе print(b) # 9 в десятичной системе print(c) # 15 в десятичной системе
Для указания, что число представляет шестнадцатеричную систему, перед числом ставится префикс 0x :
a = 0x0A b = 0xFF c = 0xA1 print(a) # 10 в десятичной системе print(b) # 255 в десятичной системе print(c) # 161 в десятичной системе
Стоит отметить, что в какой-бы системе мы не передали число в функцию print для вывода на консоль, оно по умолчанию будет выводиться в десятичной системе.
Дробные числа
Тип float представляет число с плавающей точкой, например, 1.2 или 34.76. В качесте разделителя целой и дробной частей используется точка.
height = 1.68 pi = 3.14 weight = 68. print(height) # 1.68 print(pi) # 3.14 print(weight) # 68.0
Число с плавающей точкой можно определять в экспоненциальной записи:
x = 3.9e3 print(x) # 3900.0 x = 3.9e-3 print(x) # 0.0039
Число float может иметь только 18 значимых символов. Так, в данном случае используются только два символа — 3.9. И если число слишком велико или слишком мало, то мы можем записывать число в подобной нотации, используя экспоненту. Число после экспоненты указывает степень числа 10, на которое надо умножить основное число — 3.9.
Комплексные числа
Тип complex представляет комплексные числа в формате вещественная_часть+мнимая_часть j — после мнимой части указывается суффикс j
complexNumber = 1+2j print(complexNumber) # (1+2j)
Строки
Тип str представляет строки. Строка представляет последовательность символов, заключенную в одинарные или двойные кавычки, например «hello» и ‘hello’. В Python 3.x строки представляют набор символов в кодировке Unicode
message = "Hello World!" print(message) # Hello World! name = 'Tom' print(name) # Tom
При этом, если строка имеет много символов, ее можно разбить на части и эти части разместить на разных строках кода. В этом случае вся строка заключается в круглые скобки, а ее отдельные части — в кавычки:
text = ("Laudate omnes gentes laudate " "Magnificat in secula ") print(text)
Если же мы хотим определить многострочный текст, то такой текст заключается в тройные двойные или одинарные кавычки:
''' Это комментарий ''' text = '''Laudate omnes gentes laudate Magnificat in secula Et anima mea laudate Magnificat in secula ''' print(text)
При использовани тройных одинарных кавычек не стоит путать их с комментариями: если текст в тройных одинарных кавычках присваивается переменной, то это строка, а не комментарий.
Управляющие последовательности в строке
Строка может содержать ряд специальных символов — управляющих последовательностей. Некоторые из них:
- \\ : позволяет добавить внутрь строки слеш
- \’ : позволяет добавить внутрь строки одинарную кавычку
- \» : позволяет добавить внутрь строки двойную кавычку
- \n : осуществляет переход на новую строку
- \t : добавляет табуляцию (4 отступа)
Применим несколько последовательностей:
text = "Message:\n\"Hello World\"" print(text)
Консольный вывод программы:
Message: "Hello World"
Хотя подобные последовательности могут нам помочь в некоторых делах, например, поместить в строку кавычку, сделать табуляцию, перенос на другую строку. Но они также могут и мешать. Например:
path = "C:\python\name.txt" print(path)
Здесь переменная path содержит некоторый путь к файлу. Однако внутри строки встречаются символы «\n», которые будут интерпретированы как управляющая последовательность. Так, мы получим следующий консольный вывод:
C:\python ame.txt
Чтобы избежать подобной ситуации, перед строкой ставится символ r
path = r"C:\python\name.txt" print(path)
Вставка значений в строку
Python позволяет встравивать в строку значения других переменных. Для этого внутри строки переменные размещаются в фигурных скобках <>, а перед всей строкой ставится символ f :
userName = "Tom" userAge = 37 user = f"name: age: " print(user) # name: Tom age: 37
В данном случае на место будет вставляться значение переменной userName. Аналогично на вместо будет вставляться значение переменной userAge.
Динамическая типизация
Python является языком с динамической типизацией. А это значит, что переменная не привязана жестко к определенному типу.
Тип переменной определяется исходя из значения, которое ей присвоено. Так, при присвоении строки в двойных или одинарных кавычках переменная имеет тип str . При присвоении целого числа Python автоматически определяет тип переменной как int . Чтобы определить переменную как объект float, ей присваивается дробное число, в котором разделителем целой и дробной части является точка.
При этом в процессе работы программы мы можем изменить тип переменной, присвоив ей значение другого типа:
userId = "abc" # тип str print(userId) userId = 234 # тип int print(userId)
С помощью встроенной функции type() динамически можно узнать текущий тип переменной:
userId = «abc» # тип str print(type(userId)) # userId = 234 # тип int print(type(userId)) #
Переменные в Python: что это такое и какие они бывают
Как хранить данные в Python, чтобы обращаться к ним было легко и приятно.


Иллюстрация: Оля Ежак для Skillbox Media

Иван Стуков
Журналист, изучает Python. Любит разбираться в мелочах, общаться с людьми и понимать их.
Если вы откроете любую программу в Python, то, скорее всего, увидите много таких равенств:

Как давать имена переменным
Создавая переменную на языке Python, программисты придумывают ей названия по определённым правилам именования:
- первый символ должен быть заглавной или строчной латинской буквой или нижним подчёркиванием _;
- остальные символы могут быть заглавными или строчными латинскими буквами, нижними подчёркиваниями и цифрами;
- нельзя использовать пробелы;
- имя переменной не должно совпадать ни с каким из зарезервированных в Python ключевых слов .
Приведём несколько примеров.
- Какие имена можно давать переменным: x, X, xyz, _x_y_z, XYZ, xyz_123, _123, x1Y2z2.
- Как нельзя называть переменные: 1, 1x, x y z, x&y.
Python чувствителен к регистру. Таким образом, name и Name будут считаться разными переменными.
Хотя переменные можно называть именами стандартных библиотечных функций, делать так не стоит — это закроет доступ к функции:

В любой момент мы можем присвоить переменной новое значение. Тогда она станет ссылаться на другой объект:
x = 1.2 y = 'строка'
Теперь x и y ссылаются на другие объекты с другими адресами. И так как больше ни одна переменная не ссылается на объект по адресу 2056817043856, то его автоматически удалит сборщик мусора.
Множественное присваивание значений
Если нескольким переменным нужно присвоить одно и то же значение, это можно сделать в одну строку с помощью следующей конструкции:
x = y = z = 4
print(x, y, z) >>> 4 4 4
Для присвоения разных значений тоже есть способ:
x, y, z = 1, 'игрек', ['список', 'со', 'строками'] print(x, y, z) >>> 1 игрек ['список', 'со', 'строками']
Импорт переменных
Если переменную нужно импортировать из другого файла, то используют конструкцию from import .
Например, у нас есть файл variables1.py:
name = 'Виктория' age = 23 city = 'Москва'
Используем переменную name в файле variables2.py:
from variables1 import name print(name) >>> Виктория
При этом доступа к другим переменным из variables1.py в таком случае нет:
from variables1 import name print(age) >>> NameError: name 'age' is not defined
Чтобы импортировать несколько переменных, их можно перечислить через запятую:
from variables1 import name, age print(name, age) >>> Виктория 23
Для импорта всех объектов после import ставят звёздочку *:
from variables1 import * print(name, age, city) >>> Виктория 23 Москва
Удаление переменных
Чтобы удалить переменную, используют ключевое слово del:
x = 4 del x print(x) >>> NameError: name 'x' is not defined
Типы переменных в Python
Все переменные существуют внутри определённой области видимости. В Python их три:
- локальная — внутри одной функции;
- глобальная — внутри целой программы (py-файла);
- нелокальная — внутри двух смежных функций (внутренней и внешней).
Переменные, которые принадлежат к той или иной области видимости, образуют её пространство имён.
Локальные переменные
Любые переменные, которые объявлены внутри функции, остаются только в этой функции. Например:
def local_namespace(): x = 4 x = x ** 2 return x print(local_namespace()) >>> 16
Мы можем, как обычно, распоряжаться x: изменять значение, проводить операции, возвращать — но только до тех пор, пока мы делаем это внутри функции local_namespace().
Если мы решим обратиться к x где-то в другой части программы, то интерпретатор её просто не увидит:
def local_namespace(): x = 4 x = x ** 2 return x print(x) >>> NameError: name 'x' is not defined
И наоборот: функция может распоряжаться только теми переменными, которые находятся внутри неё:
x = 4 def local_namespace(): x = x ** 2 return x print(local_namespace()) >>> UnboundLocalError: local variable 'x' referenced before assignment
При этом функция может считывать переменные из глобальной области видимости — просто не имеет права изменять их.
x = 4 def local_namespace(): y = x ** 2 return y print(x) print(local_namespace()) >>> 4 >>> 16
В итоге внутри одной программы может быть сразу несколько переменных с одним и тем же именем. Для этого они должны находиться в разных пространствах имён:
x = 0 def local_namespace(): x = 4 x = x ** 2 return x print(x) print(local_namespace()) >>> 0 >>> 16
Глобальные переменные
Любая переменная, которую объявляют вне функций, является глобальной. Она существует в пространстве имён всего py-файла.
Как мы показали выше, к ней можно обратиться внутри функции, но нельзя изменять. Чтобы исправить это, существует ключевое слово global:
x = 4 def local_namespace(): global x x = x ** 2 return x print(local_namespace()) >>> 16
Если мы создаём новую переменную внутри функции, то тем же ключевым словом global можем сделать её глобальной:
def local_namespace(): global x x = 4 return x print(local_namespace()) print(x) >>> 4 >>> 4
Нелокальные переменные
Нелокальные переменные используются, когда одна функция вложена в другую, и охватывают пространство имён только этих двух функций.
Их создают с помощью ключевого слова nonlocal.
def nonlocal_namespace(): x = 4 def local_namespace(): nonlocal x x = x ** 2 return x return local_namespace() print(nonlocal_namespace()) >>> 16
При этом в глобальной области видимости к нелокальной переменной мы обратиться не можем:
def nonlocal_namespace(): x = 4 def local_namespace(): nonlocal x x = x ** 2 return x return local_namespace() print(x) >>> NameError: name 'x' is not defined
Проверка существования переменной
В Python есть функции globals() и locals(). Они возвращают словарь с таблицей глобальных и локальных символов соответственно. В них, помимо прочего, хранятся данные о переменных.
Ключом в этих словарях является строка с именем переменной — так можно проверить её существование:
name = 'Виктория' if 'name' in globals(): print(True) >>> True
Также из этого словаря по имени переменной можно достать её значение:
name = 'Виктория' if 'name' in globals(): print(globals().get('name')) >>> Виктория
Точно так же можно делать и в локальной области видимости:
def local_namespace(): name = 'Виктория' if 'name' in locals(): print(locals().get('name')) local_namespace() >>> Виктория
Максимально возможное значение переменной
В Python, в отличие от многих других языков программирования, нет особого типа данных для хранения больших чисел. Все целые числа относятся к классу int, все числа с плавающей запятой — к классу float.
При этом никаких ограничений эти классы не предусматривают. Любая переменная любого типа данных может содержать в себе сколь угодно большое значение, пока хватает памяти компьютера.
Печать одиноких и множественных переменных
Для печати в Python используется функция print(). С её помощью можно вывести как одиночную переменную, так и несколько, перечислив их через запятую:
name, age, city = 'Виктория', 23, 'Москва' print(name) print(name, age, city) >>> Виктория >>> Виктория 23 Москва
Также в Python можно форматировать печать переменных. Для этого предусмотрено несколько способов, но самый удобный из них — f-строки. Нужно передать функции print() строку c буквой f перед ней. Сами переменные указываются в фигурных скобках: .
name, age, city = 'Виктория', 23, 'Москва' print(f'Имя: . Возраст: . Город: .') >>> Имя: Виктория. Возраст: 23. Город: Москва.
Итоги
- Переменные в Python состоят из имени и значения. При этом они хранят в себе не само значение, а ссылку на его адрес в памяти.
- Для их именования используют цифры (не могут быть первым символом в имени), латинские буквы и нижние подчёркивания.
- В Python не надо отдельно объявлять переменную — ей сразу присваивают значение. В одной строке можно создать сразу несколько переменных.
- Они существуют внутри определённой области видимости. Переменные бывают глобальные (внутри всей программы), локальные (внутри одной функции) и нелокальные (внутри двух вложенных друг в друга функций).
- У переменных в Python нет ограничения по размеру — они могут быть настолько большими, насколько хватит памяти устройства.
- Их можно импортировать из других файлов, удалять, проверять их существование в текущей области видимости, печатать в форматированной строке.
Читайте также:
- Типы данных в Python для начинающих: какие бывают и как с ними работать
- Тест: что ты знаешь о создателе Python Гвидо ван Россуме?
- Пишем десктоп-приложение на Python с помощью Tkinter
Вот их список: and, as, assert, async, await, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield.
Целое число, число с плавающей запятой, строка, список, словарь и так далее.