- Переменные в Python
- Создание и присвоение значений
- Динамическая типизация
- Множественное присваивание и обмен значениями
- Имена
- Зарезервированные имена (ключевые слова)
- Вывод в консоль
- Пустая переменная
- Области видимости
- Удаление
- Заключение
- How to delete or clear variable from memory in Python?
- The del keyword
- The gc.collect() method in Python
- Как удалить переменную в Python
Переменные в 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 делает работу с переменными очень простой, он позволяет не объявлять их типы, присваивать уже существующей значение другого типа и поддерживает работу с областями видимости.
How to delete or clear variable from memory in Python?
Computer memory is very important not just for storing data, code and instructions but also for the system’s performance. Variables are the simplest and most basic storage units. You must be knowing that Python variables are dynamically typed, i.e, they are declared as and when they are assigned/used.
Sometimes, even though you assigned a variable with some value in the program, you may realize later that that variable is not necessary. In such a scenario, you will want to delete that variable both from your program as well as your memory.
In this tutorial, you will understand how to delete a variable from the memory space in Python.
The del keyword
It is used to simply delete any Python object. (variables,arrays,lists,dictionaries etc).
Syntax: del(element to be deleted)
You can look into the below-coded example to understand this better.
Example 1: Deleting a variable
--------------------------------------------------------------------------- NameError Traceback (most recent call last) in 2 print(a) 3 del(a) ----> 4 print(a) NameError: name 'a' is not defined
Note: The del method can be used not just with variables but with all Python objects like arrays, lists, dictionaries etc.
Example 2: Deleting a list
--------------------------------------------------------------------------- NameError Traceback (most recent call last) in 2 print(a) 3 del(a) ----> 4 print(a) NameError: name 'a' is not defined
In this case, the program returns a NameError exception. This is because the variable you are trying to access no longer exists in the variable namespace.
However, the above del method only removes the variable from the namespace. It does not remove the variable from the memory space.
Well, so how do we permanently remove the variable and clear its memory?
The gc.collect() method in Python
The del method does not clear the variable from the memory. Hence, to clear the variable from memory you can resort to the gc.collect() method.
The gc.collect() method forces an immediate garbage collection of all generations. You can invoke the garbage collector as demonstrated below.
Example 1: Deleting a variable
import gc a=10 print(a) del(a) gc.collect() print(a)
NameError Traceback (most recent call last) in 4 del(a) 5 gc.collect() ----> 6 print(a) NameError: name 'a' is not defined
In this case, you are deleting a from the memory space itself.
Just like the del method, you can invoke the gc.collect() for clearing the memory of not just variables but for all Python objects.
Example 2: Deleting a dictionary
import gc a= print(a) del(a) gc.collect() print(a)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) in 4 del(a) 5 gc.collect() ----> 6 print(a) NameError: name 'a' is not defined
Thus, you can use a combination of del() and gc.collect() to clear the variable from Python memory.
On a side note, though not very relevant, you can use the dir() method to get a list of the names of all the objects in the current scope.
['__', '___', '__builtin__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '_i', '_i7', '_ii', '_iii', 'a']
a = 5 print(dir()) del a print(dir())
['__', '___', '__builtin__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '_i', '_i10', '_i9', '_ii', '_iii', 'a'] ['__', '___', '__builtin__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '_i', '_i10', '_i9', '_ii', '_iii']
Как удалить переменную в Python
Любая переменная занимает место в памяти. Не то чтобы это очень страшно на современных мощных компьютерах, однако иногда всё-таки необходимость удалить ссылку на переменную возникает.
В Python не обязательно заранее объявлять переменные. В любом месте программы вы может, например, написать так:
И это будет означать, что отныне в программе есть переменная х , которой присвоено значение 100 (подробнее о присваивании здесь). И теперь вы можете использовать эту переменную в своей программе: присваивать ей новые значения, вставлять в выражения и т.п.
Если же по какой-то причине вы больше не хотите видеть переменную х в своей программе, то вы можете удалить её с помощью инструкции del вот так:
После этого вы уже не сможете использовать переменную х в вашей программе, поскольку ссылка на неё будет удалена. Ссылка на переменную х отныне будет генерировать исключение NameError , и при попытке обращения к этой переменной будет выдано сообщение об ошибке:
Если же вам снова потребуется переменная х , то надо будет просто заново объявить её.
Инструкция del может быть использована и для других целей. Но об этом в другой раз. А сейчас для ясности можете посмотреть видео по теме данной статьи: