0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>1 мар 2023</li>
2
<ul><li>1 мар 2023</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Как хранить данные в Python, чтобы обращаться к ним было легко и приятно.</p>
4
</ul><p>Как хранить данные в Python, чтобы обращаться к ним было легко и приятно.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Журналист, изучает Python. Любит разбираться в мелочах, общаться с людьми и понимать их.</p>
6
<p>Журналист, изучает Python. Любит разбираться в мелочах, общаться с людьми и понимать их.</p>
7
<p>Если вы откроете любую программу в Python, то, скорее всего, увидите много таких равенств:</p>
7
<p>Если вы откроете любую программу в Python, то, скорее всего, увидите много таких равенств:</p>
8
x = 4 name = 'Виктория' coin_flipping_result = ['орёл', 'решка', 'решка', 'орёл']<p>Всё это -<strong>переменные</strong>. Программисты пользуются переменными, чтобы хранить в памяти компьютера данные и проводить с ними различные операции. О том, как это делается, и пойдёт наш рассказ.</p>
8
x = 4 name = 'Виктория' coin_flipping_result = ['орёл', 'решка', 'решка', 'орёл']<p>Всё это -<strong>переменные</strong>. Программисты пользуются переменными, чтобы хранить в памяти компьютера данные и проводить с ними различные операции. О том, как это делается, и пойдёт наш рассказ.</p>
9
<p><strong>Переменная</strong> - это область памяти компьютера, у которой есть имя. Структурно она состоит из трёх частей:</p>
9
<p><strong>Переменная</strong> - это область памяти компьютера, у которой есть имя. Структурно она состоит из трёх частей:</p>
10
<ul><li><strong>Имя,</strong><strong>или идентификатор,</strong> - это название, придуманное программистом, чтобы обращаться к переменной. В примерах выше это x, name и coin_flipping_result.</li>
10
<ul><li><strong>Имя,</strong><strong>или идентификатор,</strong> - это название, придуманное программистом, чтобы обращаться к переменной. В примерах выше это x, name и coin_flipping_result.</li>
11
<li><strong>Значение</strong> - это информация, которая хранится в памяти компьютера и с которой работает программа. В примерах выше это 4, 'Виктория' и ['орёл', 'решка', 'решка', 'орёл']. Они всегда принадлежат к какому-либо<a>типу данных</a>.</li>
11
<li><strong>Значение</strong> - это информация, которая хранится в памяти компьютера и с которой работает программа. В примерах выше это 4, 'Виктория' и ['орёл', 'решка', 'решка', 'орёл']. Они всегда принадлежат к какому-либо<a>типу данных</a>.</li>
12
<li><strong>Адрес</strong> - это номер ячейки памяти, в которой хранится значение переменной.</li>
12
<li><strong>Адрес</strong> - это номер ячейки памяти, в которой хранится значение переменной.</li>
13
</ul><p>Приведём наглядную аналогию. Представьте большой производственный склад, заполненный стеллажами, на которых стоят коробки. Склад - это общая память компьютера. Допустим, на третьем стеллаже, на второй полке, в шестой ячейке стоит какая-нибудь коробка. Если в неё что-нибудь положить и наклеить этикетку с названием - коробка будет переменной. То, что в ней лежит, - это её значение. Третий стеллаж, вторая полка, пятая ячейка - её адрес, а этикетка - её имя.</p>
13
</ul><p>Приведём наглядную аналогию. Представьте большой производственный склад, заполненный стеллажами, на которых стоят коробки. Склад - это общая память компьютера. Допустим, на третьем стеллаже, на второй полке, в шестой ячейке стоит какая-нибудь коробка. Если в неё что-нибудь положить и наклеить этикетку с названием - коробка будет переменной. То, что в ней лежит, - это её значение. Третий стеллаж, вторая полка, пятая ячейка - её адрес, а этикетка - её имя.</p>
14
Наглядное представление переменной в PythonИнфографика: Майя Мальгина для Skillbox Media<p>Создавая переменную на языке Python, программисты придумывают ей названия по определённым<strong>правилам именования</strong>:</p>
14
Наглядное представление переменной в PythonИнфографика: Майя Мальгина для Skillbox Media<p>Создавая переменную на языке Python, программисты придумывают ей названия по определённым<strong>правилам именования</strong>:</p>
15
<ul><li>первый символ должен быть заглавной или строчной латинской буквой или нижним подчёркиванием _;</li>
15
<ul><li>первый символ должен быть заглавной или строчной латинской буквой или нижним подчёркиванием _;</li>
16
<li>остальные символы могут быть заглавными или строчными латинскими буквами, нижними подчёркиваниями и цифрами;</li>
16
<li>остальные символы могут быть заглавными или строчными латинскими буквами, нижними подчёркиваниями и цифрами;</li>
17
<li>нельзя использовать пробелы;</li>
17
<li>нельзя использовать пробелы;</li>
18
<li>имя переменной не должно совпадать ни с каким из зарезервированных в Python ключевых слов.</li>
18
<li>имя переменной не должно совпадать ни с каким из зарезервированных в Python ключевых слов.</li>
19
</ul><p>Приведём несколько примеров.</p>
19
</ul><p>Приведём несколько примеров.</p>
20
<ul><li>Какие имена можно давать переменным: x, X, xyz, _x_y_z, XYZ, xyz_123, _123, x1Y2z2.</li>
20
<ul><li>Какие имена можно давать переменным: x, X, xyz, _x_y_z, XYZ, xyz_123, _123, x1Y2z2.</li>
21
<li>Как нельзя называть переменные: 1, 1x, x y z, x&y.</li>
21
<li>Как нельзя называть переменные: 1, 1x, x y z, x&y.</li>
22
</ul><p>Python чувствителен к регистру. Таким образом, name и Name будут считаться разными переменными.</p>
22
</ul><p>Python чувствителен к регистру. Таким образом, name и Name будут считаться разными переменными.</p>
23
<p>Хотя переменные можно называть именами стандартных библиотечных функций, делать так не стоит - это закроет доступ к функции:</p>
23
<p>Хотя переменные можно называть именами стандартных библиотечных функций, делать так не стоит - это закроет доступ к функции:</p>
24
print('Hello, world!') >>> Hello, world! print = 14 print('Hello, world') >>> TypeError: 'int' object is not callable<p>Чуть позже мы объясним, почему так происходит.</p>
24
print('Hello, world!') >>> Hello, world! print = 14 print('Hello, world') >>> TypeError: 'int' object is not callable<p>Чуть позже мы объясним, почему так происходит.</p>
25
<p>Синтаксис Python позволяет использовать разные стили для именования переменных:</p>
25
<p>Синтаксис Python позволяет использовать разные стили для именования переменных:</p>
26
<ul><li>lowercase - все буквы строчные;</li>
26
<ul><li>lowercase - все буквы строчные;</li>
27
<li>lower_case_with_underscores - все буквы строчные, между словами нижние подчёркивания;</li>
27
<li>lower_case_with_underscores - все буквы строчные, между словами нижние подчёркивания;</li>
28
<li>UPPERCASE - все буквы заглавные;</li>
28
<li>UPPERCASE - все буквы заглавные;</li>
29
<li>UPPER_CASE_WITH_UNDERSCORES - все буквы заглавные, между словами нижние подчёркивания;</li>
29
<li>UPPER_CASE_WITH_UNDERSCORES - все буквы заглавные, между словами нижние подчёркивания;</li>
30
<li>CamelCase - каждое слово начинается с заглавной буквы;</li>
30
<li>CamelCase - каждое слово начинается с заглавной буквы;</li>
31
<li>mixedCase - каждое слово, кроме первого, начинается с заглавной буквы;</li>
31
<li>mixedCase - каждое слово, кроме первого, начинается с заглавной буквы;</li>
32
<li>Camel_Case_With_Underscores - каждое слово начинается с заглавной буквы, между словами нижние подчёркивания (это некрасиво, никогда так не делайте).</li>
32
<li>Camel_Case_With_Underscores - каждое слово начинается с заглавной буквы, между словами нижние подчёркивания (это некрасиво, никогда так не делайте).</li>
33
</ul><p>Тем не менее среди Python-разработчиков принят<strong>стандарт PEP 8</strong> - это руководство, в котором собраны рекомендации по оформлению кода. То есть сообщество само для себя устанавливает дополнительные ограничения при именовании переменных:</p>
33
</ul><p>Тем не менее среди Python-разработчиков принят<strong>стандарт PEP 8</strong> - это руководство, в котором собраны рекомендации по оформлению кода. То есть сообщество само для себя устанавливает дополнительные ограничения при именовании переменных:</p>
34
<ul><li>использовать lowercase, при необходимости разбивая слова нижними подчёркиваниями, если это нужно для улучшения читаемости;</li>
34
<ul><li>использовать lowercase, при необходимости разбивая слова нижними подчёркиваниями, если это нужно для улучшения читаемости;</li>
35
<li>если в готовом проекте преобладает mixedCase, то писать стоит в этом стиле - чтобы сохранялась обратная совместимость;</li>
35
<li>если в готовом проекте преобладает mixedCase, то писать стоит в этом стиле - чтобы сохранялась обратная совместимость;</li>
36
<li>не давать имена l (строчная L), O (заглавная o) и I (заглавная i) - в некоторых шрифтах они неотличимы от нуля и единицы.</li>
36
<li>не давать имена l (строчная L), O (заглавная o) и I (заглавная i) - в некоторых шрифтах они неотличимы от нуля и единицы.</li>
37
</ul><p>Следуйте советам<a>PEP 8</a>, чтобы ваш код был понятным и легко поддерживаемым.</p>
37
</ul><p>Следуйте советам<a>PEP 8</a>, чтобы ваш код был понятным и легко поддерживаемым.</p>
38
<p>Python - язык с динамической типизацией. То есть значения присваиваются переменным не при компиляции, а построчно во время выполнения программы.</p>
38
<p>Python - язык с динамической типизацией. То есть значения присваиваются переменным не при компиляции, а построчно во время выполнения программы.</p>
39
<p>Поэтому в Python объявлять переменную отдельно не нужно - достаточно сразу её <strong>инициализировать, то есть присвоить значение</strong>. Для этого используют знак равно =.</p>
39
<p>Поэтому в Python объявлять переменную отдельно не нужно - достаточно сразу её <strong>инициализировать, то есть присвоить значение</strong>. Для этого используют знак равно =.</p>
40
<p>Более того, потом ей же можно присвоить значение другого типа:</p>
40
<p>Более того, потом ей же можно присвоить значение другого типа:</p>
41
x = 4 print(x) >>> 4 x = 'слово' print(x) >>> слово<p>В языках со статической типизацией, таких как C++ и Java, подобный трюк не пройдёт: компилятор сообщит об ошибке - ведь переменная изначально хранила целое число, а не строку. А в Python это возможно, потому что переменные ссылаются не на сами данные, а на их адрес в памяти.</p>
41
x = 4 print(x) >>> 4 x = 'слово' print(x) >>> слово<p>В языках со статической типизацией, таких как C++ и Java, подобный трюк не пройдёт: компилятор сообщит об ошибке - ведь переменная изначально хранила целое число, а не строку. А в Python это возможно, потому что переменные ссылаются не на сами данные, а на их адрес в памяти.</p>
42
<p>В Python все данные представлены в виде<strong>объектов</strong>. У каждого из них есть свой<strong>идентификатор</strong> - адрес области памяти, в которой он находится.</p>
42
<p>В Python все данные представлены в виде<strong>объектов</strong>. У каждого из них есть свой<strong>идентификатор</strong> - адрес области памяти, в которой он находится.</p>
43
<p>Этот идентификатор можно узнать с помощью функции id():</p>
43
<p>Этот идентификатор можно узнать с помощью функции id():</p>
44
x = 4 print(id(x)) >>> 2056817043856<p>Когда мы инициализировали x, программа создала объект с числом 4, принадлежащий к <a>классу (типу данных)</a>int.</p>
44
x = 4 print(id(x)) >>> 2056817043856<p>Когда мы инициализировали x, программа создала объект с числом 4, принадлежащий к <a>классу (типу данных)</a>int.</p>
45
<p>При этом внутри переменной<strong>содержится не сам объект, а его адрес</strong>. Это легко проверить, создав ещё одну переменную, в которой будет находиться та же самая четвёрка.</p>
45
<p>При этом внутри переменной<strong>содержится не сам объект, а его адрес</strong>. Это легко проверить, создав ещё одну переменную, в которой будет находиться та же самая четвёрка.</p>
46
y = 4 print(id(y)) >>> 2056817043856<p>Выглядит это так:</p>
46
y = 4 print(id(y)) >>> 2056817043856<p>Выглядит это так:</p>
47
Объект один, адрес один, а ссылающихся на него переменных - двеИнфографика: Майя Мальгина для Skillbox Media<p>В любой момент мы можем присвоить переменной новое значение. Тогда она станет ссылаться на другой объект:</p>
47
Объект один, адрес один, а ссылающихся на него переменных - двеИнфографика: Майя Мальгина для Skillbox Media<p>В любой момент мы можем присвоить переменной новое значение. Тогда она станет ссылаться на другой объект:</p>
48
x = 1.2 y = 'строка'<p>Теперь x и y ссылаются на другие объекты с другими адресами. И так как больше ни одна переменная не ссылается на объект по адресу 2056817043856, то его автоматически удалит сборщик мусора.</p>
48
x = 1.2 y = 'строка'<p>Теперь x и y ссылаются на другие объекты с другими адресами. И так как больше ни одна переменная не ссылается на объект по адресу 2056817043856, то его автоматически удалит сборщик мусора.</p>
49
<p>Если нескольким переменным нужно<strong>присвоить одно и то же значение</strong>, это можно сделать в одну строку с помощью следующей конструкции:</p>
49
<p>Если нескольким переменным нужно<strong>присвоить одно и то же значение</strong>, это можно сделать в одну строку с помощью следующей конструкции:</p>
50
x = y = z = 4<p>Проверим:</p>
50
x = y = z = 4<p>Проверим:</p>
51
print(x, y, z) >>> 4 4 4<p>Для<strong>присвоения разных значений</strong>тоже есть способ:</p>
51
print(x, y, z) >>> 4 4 4<p>Для<strong>присвоения разных значений</strong>тоже есть способ:</p>
52
x, y, z = 1, 'игрек', ['список', 'со', 'строками'] print(x, y, z) >>> 1 игрек ['список', 'со', 'строками']<p>Если переменную нужно<strong>импортировать из другого файла</strong>, то используют конструкцию from <имя файла> import <имя переменной>.</p>
52
x, y, z = 1, 'игрек', ['список', 'со', 'строками'] print(x, y, z) >>> 1 игрек ['список', 'со', 'строками']<p>Если переменную нужно<strong>импортировать из другого файла</strong>, то используют конструкцию from <имя файла> import <имя переменной>.</p>
53
<p>Например, у нас есть файл variables1.py:</p>
53
<p>Например, у нас есть файл variables1.py:</p>
54
name = 'Виктория' age = 23 city = 'Москва'<p>Используем переменную name в файле variables2.py:</p>
54
name = 'Виктория' age = 23 city = 'Москва'<p>Используем переменную name в файле variables2.py:</p>
55
from variables1 import name print(name) >>> Виктория<p>При этом доступа к другим переменным из variables1.py в таком случае нет:</p>
55
from variables1 import name print(name) >>> Виктория<p>При этом доступа к другим переменным из variables1.py в таком случае нет:</p>
56
from variables1 import name print(age) >>> NameError: name 'age' is not defined<p>Чтобы<strong>импортировать несколько переменных</strong>, их можно перечислить через запятую:</p>
56
from variables1 import name print(age) >>> NameError: name 'age' is not defined<p>Чтобы<strong>импортировать несколько переменных</strong>, их можно перечислить через запятую:</p>
57
from variables1 import name, age print(name, age) >>> Виктория 23<p>Для<strong>импорта всех объектов</strong>после import ставят звёздочку *:</p>
57
from variables1 import name, age print(name, age) >>> Виктория 23<p>Для<strong>импорта всех объектов</strong>после import ставят звёздочку *:</p>
58
from variables1 import * print(name, age, city) >>> Виктория 23 Москва<p>Чтобы<strong>удалить переменную</strong>, используют ключевое слово del:</p>
58
from variables1 import * print(name, age, city) >>> Виктория 23 Москва<p>Чтобы<strong>удалить переменную</strong>, используют ключевое слово del:</p>
59
x = 4 del x print(x) >>> NameError: name 'x' is not defined<p>Все переменные существуют внутри определённой<strong>области видимости</strong>. В Python их три:</p>
59
x = 4 del x print(x) >>> NameError: name 'x' is not defined<p>Все переменные существуют внутри определённой<strong>области видимости</strong>. В Python их три:</p>
60
<ul><li>локальная - внутри одной функции;</li>
60
<ul><li>локальная - внутри одной функции;</li>
61
<li>глобальная - внутри целой программы (py-файла);</li>
61
<li>глобальная - внутри целой программы (py-файла);</li>
62
<li>нелокальная - внутри двух смежных функций (внутренней и внешней).</li>
62
<li>нелокальная - внутри двух смежных функций (внутренней и внешней).</li>
63
</ul><p>Переменные, которые принадлежат к той или иной области видимости, образуют её <strong>пространство имён</strong>.</p>
63
</ul><p>Переменные, которые принадлежат к той или иной области видимости, образуют её <strong>пространство имён</strong>.</p>
64
<p>Любые переменные, которые объявлены внутри функции, остаются только в этой функции. Например:</p>
64
<p>Любые переменные, которые объявлены внутри функции, остаются только в этой функции. Например:</p>
65
def local_namespace(): x = 4 x = x ** 2 return x print(local_namespace()) >>> 16<p>Мы можем, как обычно, распоряжаться x: изменять значение, проводить операции, возвращать - но только до тех пор, пока мы делаем это внутри функции local_namespace().</p>
65
def local_namespace(): x = 4 x = x ** 2 return x print(local_namespace()) >>> 16<p>Мы можем, как обычно, распоряжаться x: изменять значение, проводить операции, возвращать - но только до тех пор, пока мы делаем это внутри функции local_namespace().</p>
66
<p>Если мы решим обратиться к x где-то в другой части программы, то интерпретатор её просто не увидит:</p>
66
<p>Если мы решим обратиться к x где-то в другой части программы, то интерпретатор её просто не увидит:</p>
67
def local_namespace(): x = 4 x = x ** 2 return x print(x) >>> NameError: name 'x' is not defined<p>И наоборот: функция может распоряжаться только теми переменными, которые находятся внутри неё:</p>
67
def local_namespace(): x = 4 x = x ** 2 return x print(x) >>> NameError: name 'x' is not defined<p>И наоборот: функция может распоряжаться только теми переменными, которые находятся внутри неё:</p>
68
x = 4 def local_namespace(): x = x ** 2 return x print(local_namespace()) >>> UnboundLocalError: local variable 'x' referenced before assignment<p>При этом функция может считывать переменные из глобальной области видимости - просто не имеет права изменять их.</p>
68
x = 4 def local_namespace(): x = x ** 2 return x print(local_namespace()) >>> UnboundLocalError: local variable 'x' referenced before assignment<p>При этом функция может считывать переменные из глобальной области видимости - просто не имеет права изменять их.</p>
69
x = 4 def local_namespace(): y = x ** 2 return y print(x) print(local_namespace()) >>> 4 >>> 16<p>В итоге внутри одной программы может быть сразу несколько переменных с одним и тем же именем. Для этого они должны находиться в разных пространствах имён:</p>
69
x = 4 def local_namespace(): y = x ** 2 return y print(x) print(local_namespace()) >>> 4 >>> 16<p>В итоге внутри одной программы может быть сразу несколько переменных с одним и тем же именем. Для этого они должны находиться в разных пространствах имён:</p>
70
x = 0 def local_namespace(): x = 4 x = x ** 2 return x print(x) print(local_namespace()) >>> 0 >>> 16<p>Любая переменная, которую объявляют вне функций, является<strong>глобальной</strong>. Она существует в пространстве имён всего py-файла.</p>
70
x = 0 def local_namespace(): x = 4 x = x ** 2 return x print(x) print(local_namespace()) >>> 0 >>> 16<p>Любая переменная, которую объявляют вне функций, является<strong>глобальной</strong>. Она существует в пространстве имён всего py-файла.</p>
71
<p>Как мы показали выше, к ней можно обратиться внутри функции, но нельзя изменять. Чтобы исправить это, существует ключевое слово global:</p>
71
<p>Как мы показали выше, к ней можно обратиться внутри функции, но нельзя изменять. Чтобы исправить это, существует ключевое слово global:</p>
72
x = 4 def local_namespace(): global x x = x ** 2 return x print(local_namespace()) >>> 16<p>Если мы создаём новую переменную внутри функции, то тем же ключевым словом global можем сделать её глобальной:</p>
72
x = 4 def local_namespace(): global x x = x ** 2 return x print(local_namespace()) >>> 16<p>Если мы создаём новую переменную внутри функции, то тем же ключевым словом global можем сделать её глобальной:</p>
73
def local_namespace(): global x x = 4 return x print(local_namespace()) print(x) >>> 4 >>> 4<p><strong>Нелокальные переменные</strong>используются, когда<strong>одна функция вложена в другую</strong>, и охватывают пространство имён только этих двух функций.</p>
73
def local_namespace(): global x x = 4 return x print(local_namespace()) print(x) >>> 4 >>> 4<p><strong>Нелокальные переменные</strong>используются, когда<strong>одна функция вложена в другую</strong>, и охватывают пространство имён только этих двух функций.</p>
74
<p>Их создают с помощью ключевого слова nonlocal.</p>
74
<p>Их создают с помощью ключевого слова nonlocal.</p>
75
def nonlocal_namespace(): x = 4 def local_namespace(): nonlocal x x = x ** 2 return x return local_namespace() print(nonlocal_namespace()) >>> 16<p>При этом в глобальной области видимости к нелокальной переменной мы обратиться не можем:</p>
75
def nonlocal_namespace(): x = 4 def local_namespace(): nonlocal x x = x ** 2 return x return local_namespace() print(nonlocal_namespace()) >>> 16<p>При этом в глобальной области видимости к нелокальной переменной мы обратиться не можем:</p>
76
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<p>В Python есть функции globals() и locals(). Они возвращают<strong>словарь с таблицей глобальных и локальных символов</strong>соответственно. В них, помимо прочего, хранятся данные о переменных.</p>
76
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<p>В Python есть функции globals() и locals(). Они возвращают<strong>словарь с таблицей глобальных и локальных символов</strong>соответственно. В них, помимо прочего, хранятся данные о переменных.</p>
77
<p>Ключом в этих словарях является строка с именем переменной - так можно<strong>проверить её существование</strong>:</p>
77
<p>Ключом в этих словарях является строка с именем переменной - так можно<strong>проверить её существование</strong>:</p>
78
name = 'Виктория' if 'name' in globals(): print(True) >>> True<p>Также из этого словаря по имени переменной можно<strong>достать её значение</strong>:</p>
78
name = 'Виктория' if 'name' in globals(): print(True) >>> True<p>Также из этого словаря по имени переменной можно<strong>достать её значение</strong>:</p>
79
name = 'Виктория' if 'name' in globals(): print(globals().get('name')) >>> Виктория<p>Точно так же можно делать и в локальной области видимости:</p>
79
name = 'Виктория' if 'name' in globals(): print(globals().get('name')) >>> Виктория<p>Точно так же можно делать и в локальной области видимости:</p>
80
def local_namespace(): name = 'Виктория' if 'name' in locals(): print(locals().get('name')) local_namespace() >>> Виктория<p>В Python, в отличие от многих других языков программирования, нет особого типа данных для хранения больших чисел. Все целые числа относятся к классу int, все числа с плавающей запятой - к классу float.</p>
80
def local_namespace(): name = 'Виктория' if 'name' in locals(): print(locals().get('name')) local_namespace() >>> Виктория<p>В Python, в отличие от многих других языков программирования, нет особого типа данных для хранения больших чисел. Все целые числа относятся к классу int, все числа с плавающей запятой - к классу float.</p>
81
<p>При этом никаких ограничений эти классы не предусматривают. Любая переменная любого типа данных может<strong>содержать в себе сколь угодно большое значение</strong>, пока хватает памяти компьютера.</p>
81
<p>При этом никаких ограничений эти классы не предусматривают. Любая переменная любого типа данных может<strong>содержать в себе сколь угодно большое значение</strong>, пока хватает памяти компьютера.</p>
82
<p>Для печати в Python используется функция print(). С её помощью можно<strong>вывести как одиночную переменную, так и несколько</strong>, перечислив их через запятую:</p>
82
<p>Для печати в Python используется функция print(). С её помощью можно<strong>вывести как одиночную переменную, так и несколько</strong>, перечислив их через запятую:</p>
83
name, age, city = 'Виктория', 23, 'Москва' print(name) print(name, age, city) >>> Виктория >>> Виктория 23 Москва<p>Также в Python можно<strong>форматировать печать переменных</strong>. Для этого предусмотрено несколько способов, но самый удобный из них -<strong>f-строки</strong>. Нужно передать функции print() строку c буквой f перед ней. Сами переменные указываются в фигурных скобках: {имя переменной}.</p>
83
name, age, city = 'Виктория', 23, 'Москва' print(name) print(name, age, city) >>> Виктория >>> Виктория 23 Москва<p>Также в Python можно<strong>форматировать печать переменных</strong>. Для этого предусмотрено несколько способов, но самый удобный из них -<strong>f-строки</strong>. Нужно передать функции print() строку c буквой f перед ней. Сами переменные указываются в фигурных скобках: {имя переменной}.</p>
84
name, age, city = 'Виктория', 23, 'Москва' print(f'Имя: {name}. Возраст: {age}. Город: {city}.') >>> Имя: Виктория. Возраст: 23. Город: Москва.<ul><li><strong>Переменные</strong>в Python состоят из <strong>имени</strong>и <strong>значения</strong>. При этом они хранят в себе не само значение, а <strong>ссылку на его адрес в памяти</strong>.</li>
84
name, age, city = 'Виктория', 23, 'Москва' print(f'Имя: {name}. Возраст: {age}. Город: {city}.') >>> Имя: Виктория. Возраст: 23. Город: Москва.<ul><li><strong>Переменные</strong>в Python состоят из <strong>имени</strong>и <strong>значения</strong>. При этом они хранят в себе не само значение, а <strong>ссылку на его адрес в памяти</strong>.</li>
85
<li>Для их именования используют цифры (не могут быть первым символом в имени), латинские буквы и нижние подчёркивания.</li>
85
<li>Для их именования используют цифры (не могут быть первым символом в имени), латинские буквы и нижние подчёркивания.</li>
86
<li>В Python не надо отдельно объявлять переменную - ей<strong>сразу присваивают значение</strong>. В одной строке можно создать сразу несколько переменных.</li>
86
<li>В Python не надо отдельно объявлять переменную - ей<strong>сразу присваивают значение</strong>. В одной строке можно создать сразу несколько переменных.</li>
87
<li>Они существуют внутри определённой<strong>области видимости</strong>. Переменные бывают<strong>глобальные</strong>(внутри всей программы),<strong>локальные</strong>(внутри одной функции) и <strong>нелокальные</strong>(внутри двух вложенных друг в друга функций).</li>
87
<li>Они существуют внутри определённой<strong>области видимости</strong>. Переменные бывают<strong>глобальные</strong>(внутри всей программы),<strong>локальные</strong>(внутри одной функции) и <strong>нелокальные</strong>(внутри двух вложенных друг в друга функций).</li>
88
<li>У переменных в Python<strong>нет ограничения по размеру</strong> - они могут быть настолько большими, насколько хватит памяти устройства.</li>
88
<li>У переменных в Python<strong>нет ограничения по размеру</strong> - они могут быть настолько большими, насколько хватит памяти устройства.</li>
89
<li>Их можно импортировать из других файлов, удалять, проверять их существование в текущей области видимости, печатать в форматированной строке.</li>
89
<li>Их можно импортировать из других файлов, удалять, проверять их существование в текущей области видимости, печатать в форматированной строке.</li>
90
</ul><p>Python для всех</p>
90
</ul><p>Python для всех</p>
91
<p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
91
<p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
92
<p><a>Пройти бесплатно</a></p>
92
<p><a>Пройти бесплатно</a></p>
93
<a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>
93
<a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>