edubun
Русский

Значения и переменные

В алгебре score = score + 5 не имеет решения. В Python это обычная строка: если score было равно 10, оно станет 15.

Знак = не означает «равно»

Покажи ученику, изучающему математику, строку score = score + 5, и он скажет, что это неверно: никакое число не равно самому себе плюс пять. В алгебре он прав, и именно поэтому такая строка при первом знакомстве с программой сбивает с толку. В Python знак = не утверждает равенство двух величин. Это направленная инструкция: сначала вычисли правую часть, затем свяжи имя слева с результатом.

score = 10
score = score + 5
print(score)
Вывод
15

Прочитай это так, как делает Python. Строка 1: справа стоит 10, поэтому имя score теперь ссылается на 10. Строка 2: справа score + 5, то есть 10 + 5, то есть 15, поэтому теперь score ссылается на 15. Прежнее значение 10 больше не используется. Строка 3 выводит то, на что score ссылается в этот момент. Такое имя, связанное со значением, называют переменной, а строку, задающую ей значение, присваиванием.

Переменная похожа на бирку с именем. После score = score + 5 бирка переходит к новому значению 15, оставляя прежнее значение 10.

Таблица трассировки следит за каждой переменной построчно

Когда меняются несколько переменных, веди таблицу трассировки: по строке на каждую строку кода, по столбцу на переменную. Записывай значение каждой переменной после выполнения строки. Способ неторопливый, но надёжный. С такой таблицей на большинство вопросов «почему выводится именно это?» можно ответить меньше чем за минуту.

score = 10
bonus = score * 2
score = 0
print(score, bonus)
Вывод
0 20
Строкаscorebonus
score = 1010(пока нет)
bonus = score * 21020
score = 0020
print(score, bonus)020

Посмотри на две последние строки. Изменение score на 0 не изменило bonus. При выполнении строки 2 Python вычислил 10 * 2 = 20 и присвоил bonus это число. В bonus хранится результат, а не способ вычисления, поэтому переменная не помнит, откуда взялось 20.

У каждого значения есть тип

Значения бывают разных видов, называемых типами. Целые числа, например 42, имеют тип int. Числа с десятичной точкой, например 3.5, имеют тип float. Текст в кавычках имеет тип str. У True и False тип bool. Встроенная функция type показывает тип значения. Тип важен: от него зависит действие операции. Так, 2 + 3 складывает числа, а "2" + "3" соединяет две строки в "23".

print(type(42))
print(type(3.5))
print(type("42"))
print(type(True))
print(2 + 3, "2" + "3")
Вывод
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
5 23

Правила имён

В имени переменной могут быть буквы, цифры и знак подчёркивания _, но оно не может начинаться с цифры или содержать пробелы. Регистр важен: Score и score являются разными переменными. Некоторые слова, например if, for и True, зарезервированы языком и не могут быть именами. Программисты на Python обычно пишут имена строчными буквами, разделяя слова подчёркиваниями, как в lunch_price, и выбирают имена по смыслу значения. Для быстрой проверки подойдёт x, а в программе, которую будут читать другие, лучше seats_left.

a = "left"
b = "right"
a, b = b, a
print(a, b)
Вывод
right left

В последнем примере два значения меняются местами одной строкой. Python сначала вычисляет всю правую часть b, a, а уже потом присваивает результаты a и b. Во многих других языках для этого нужна третья переменная.

переменнаяИмя, которое ссылается на значение
присваиваниеname = value: вычислить правую часть, затем связать с ней имя
intЦелые числа: 7, -3, 2026
floatЧисла с десятичной точкой: 3.5, 0.1
strТекст в кавычках
boolTrue или False
таблица трассировкиТаблица значений всех переменных после каждой строки
  1. Что выведет этот код?
    x = 4
    x = x + 3
    print(x)
  2. Что выведет этот код?
    a = 3
    b = a
    a = 7
    print(b)
  3. Что выведет этот код?
    price = 1500
    count = 3
    total = price * count
    print(total)
  4. Что выведет этот код?
    n = 2
    n = n * n
    n = n * n
    print(n)
    • 4
    • 8
    • 16
    • 2
  5. Что выведет этот код?
    print(type(7.0))
  6. Что выведет этот код?
    print("7" + "7")
  7. Какое из этих имён переменной допустимо?
    • 2nd_place
    • seats left
    • seats_left
    • for
  8. Что выведет этот код?
    a = "left"
    b = "right"
    a, b = b, a
    print(b)
  9. Что выведет этот код?
    Score = 5
    score = 9
    print(Score)
    • 5
    • 9
    • 14
    • An error
  10. Чему равно x после x = 10 и отдельной строки x + 1?
    • 10
    • 11
    • x + 1
    • Ошибка
Частые ошибки
  • «5 = x и x = 5 означают одно и то же». Имя должно стоять слева. Строка 5 = x вызывает SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?
  • «bonus = score * 2 навсегда связывает bonus со score». bonus получает число, вычисленное в этот момент. Последующие изменения score его не затрагивают, как видно по таблице трассировки.
  • «Запись x + 1 прибавляет единицу к x». Само по себе выражение ничего не меняет. Нужно x = x + 1 или сокращённая форма x += 1.
Заметка для учителяПривычный по математике знак = вызывает больше всего путаницы. Помогает привычка читать = вслух как «получает» или «становится» («score получает score плюс пять») и никогда как «равно». На таблицы трассировки стоит выделить время на уроке: дай программу из пяти строк, попроси заполнить таблицу до запуска, затем запустите и сравните. Обмен a, b = b, a хорошо проверяет понимание того, что сначала вычисляется вся правая часть. Используй type() с самого начала: неожиданность с "7" + "7" вернётся в уроке о вводе.
Главное
  • = означает «вычисли правую часть, затем дай результату это имя».
  • В таблице трассировки записывают значения всех переменных после каждой строки.
  • Типы: int, float, str, bool. Узнать тип можно с помощью type().
  • Имена: буквы, цифры, _; цифра не может стоять первой; регистр важен.
Источники курса (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Проверено: 2026-10-19