Что такое ключевые слова в Python
Зарезервированное слово — это слово, которое язык забрал себе: оно обозначает команду или значение, и программист не может использовать его как имя. Документация Python называет такие слова keywords, по-русски их называют ключевыми или служебными.
Когда Python читает программу, он сначала разбивает текст на кусочки: имена, числа, строки, знаки и служебные слова. Слово while для него не просто набор букв, а сигнал «дальше будет условие цикла». Поэтому имя while занять невозможно, а имя whale или while_count — пожалуйста: совпадать должно слово целиком.
Регистр тоже важен. True с большой буквы — зарезервировано, а true с маленькой — обычное имя, которое Python не узнает и выдаст NameError, если вы его не создали. Из 35 слов только три пишутся с заглавной: True, False и None. Все остальные — строчными буквами, и это надо помнить при наборе.
В редакторе выше собраны несколько таких слов в рабочей программе. Нажмите «▶ Запустить» или Ctrl+Enter, а потом уберите решётку в последней строке и запустите ещё раз: увидите, как Python реагирует на попытку присвоить значение слову class.
Полный список из 35 слов
В Python 3.13 список keyword.kwlist содержит 35 слов. Ниже они собраны по смыслу, чтобы список было проще запомнить: так его удобнее учить, чем по алфавиту.
| Группа | Слова | Для чего |
| Значения | True, False, None | Истина, ложь и «ничего» |
| Логика и проверки | and, or, not, in, is | Составные условия, поиск в списке, сравнение объектов |
| Ветвления | if, elif, else | Выбор, какой код выполнить |
| Циклы | for, while, break, continue | Повторение и управление повтором |
| Функции | def, return, lambda, yield | Создание функций и возврат результата |
| Классы и области имён | class, global, nonlocal, del | Свои типы данных, доступ к внешним переменным, удаление имени |
| Модули | import, from, as | Подключение модулей и псевдонимы |
| Обработка ошибок | try, except, finally, raise, assert | Перехват и создание исключений |
| Прочее | pass, with, async, await | Пустой блок, работа с файлами, асинхронный код |
Школьнику для первых программ хватает примерно половины таблицы: значения, логика, ветвления, циклы, def, return и import. Слова async, await, yield и nonlocal понадобятся гораздо позже, а некоторым программистам не нужны годами. Учить их наизусть заранее не нужно: достаточно знать, что они заняты.
Слова для условий и циклов
Если программа принимает решения или что-то повторяет, в ней почти наверняка есть 7 служебных слов: if, elif, else, for, while, break и continue. После заголовка с ними всегда ставится двоеточие и блок с отступом.
pin = "1234"
for popytka in range(3):
vvod = input("PIN: ")
if vvod == pin:
print("Открыто")
break
elif vvod == "":
print("Пусто, попробуйте ещё")
continue
else:
print("Неверно")
Здесь for и in задают цикл из трёх попыток, if, elif и else выбирают реакцию, break досрочно завершает цикл, а continue сразу переходит к следующей попытке. В цикле while то же самое работает с условием вместо последовательности. Подробно каждую конструкцию разбирают уроки про условия if, elif и else и про цикл while с условием.
Слово in встречается в двух ролях: в заголовке цикла for x in ... и в проверке «есть ли элемент внутри»: "а" in "мама" даёт True. Это одно и то же слово, просто в разных конструкциях.
Слова для функций, классов и модулей
Чтобы создать свою функцию, нужны 2 слова: def начинает описание, return возвращает результат. Классы описывают словом class, а модули подключают через import, from и as.
import math as m
from random import randint
def ploshchad_kruga(r):
return m.pi * r ** 2
class Kot:
pass
print(round(ploshchad_kruga(2), 2))
print(randint(1, 6))
Слово pass означает «ничего не делать». Оно нужно там, где Python требует блок, а писать в нём пока нечего: пустой класс, заготовка функции, ветка условия на потом. Без pass пустой блок вызовет ошибку отступа. Слово lambda создаёт маленькую безымянную функцию в одну строку, например для сортировки по длине: sorted(slova, key=lambda s: len(s)). Новичку она не обязательна, обычный def делает то же самое понятнее.
Слова global и nonlocal разрешают функции менять переменную снаружи. Опытные программисты обычно советуют обходиться без global: функция, которая получает данные через параметры и отдаёт через return, понятнее и проще проверяется.
True, False, None и логические слова
Три слова с заглавной буквы — это не команды, а готовые значения: True означает истину, False — ложь, None — отсутствие значения. Их можно присвоить переменной, сравнить и вывести.
est_klyuch = False
print(not est_klyuch)
print(5 > 3 and 2 > 7)
print(5 > 3 or 2 > 7)
rezultat = print("привет")
print(rezultat is None)
True
False
True
привет
True
Последние две строки показывают любопытную вещь: функция print ничего не возвращает, поэтому в переменной оказывается None. Проверять «пусто ли» принято через is None, а не через == None; так советует PEP 8[1]. Логические слова and, or, not соответствуют операциям И, ИЛИ, НЕ, которые по федеральной образовательной программе изучают в 8 классе на уроках информатики. Таблицы истинности для них есть на странице про логические операции И, ИЛИ, НЕ.
Как узнать список в своей версии
Чтобы не гадать, сколько слов зарезервировано в вашей версии Python, спросите у самого языка: стандартный модуль keyword хранит список и умеет проверять любое слово.
import keyword
print(len(keyword.kwlist))
print(keyword.kwlist)
print(keyword.iskeyword("for"), keyword.iskeyword("print"))
print(keyword.softkwlist)
Запускайте этот код в IDLE или другом установленном Python: редактор на сайте работает на облегчённом интерпретаторе Skulpt и модуль keyword не поддерживает. В Python 3.13 первая строка выведет 35, проверка покажет, что for занято, а print — нет.
Последняя строка выводит «мягкие» слова: match, case, type и знак подчёркивания. Они работают как служебные только в определённых конструкциях, а в остальном коде остаются обычными именами. Переменная type = 3 не вызовет ошибку, хотя и испортит встроенную функцию type(). В старых версиях языка жёстких слов было меньше: например, async и await добавили позже остальных. Официальная документация Python в разделе о лексическом анализе перечисляет актуальный список[2].
Что будет, если назвать переменную ключевым словом
Если присвоить значение зарезервированному слову, программа не запустится вообще: Python найдёт ошибку ещё до выполнения первой строки и покажет SyntaxError с указанием места.
class = "7Б"
print(class)
class = "7Б"
^
SyntaxError: invalid syntax
Такая ошибка часто случается со словами, которые хочется использовать как имена: class для номера класса, from и in в программах про маршруты, pass для пароля, global для общего счёта. Исправление простое — добавить к имени уточнение или подчёркивание: klass, class_, nomer_klassa, parol. Подчёркивание в конце имени — приём, который прямо описан в PEP 8 для случаев, когда имя совпадает с зарезервированным.
Со встроенными функциями ситуация другая. Имена print, list, sum, input технически не зарезервированы, и строка sum = 0 выполнится. Но после неё функция sum() перестанет работать до конца программы, и ошибка проявится позже, в неожиданном месте. Чем отличаются эти два случая, подробнее рассказано на странице про ошибку SyntaxError.
Когда таблица слов не поможет
Не стоит ждать от списка служебных слов больше, чем он может дать: он отвечает на вопрос «какие имена заняты», но не учит писать программы. В этих 4 ситуациях нужен другой инструмент.
- Ошибка в имени встроенной функции. Из 35 слов ни одно не совпадает с
printилиlen, поэтому список не подскажет, что вы испортилиsum. - Ошибка NameError из-за опечатки.
TureвместоTrue— это 1 переставленная буква, но таблица не найдёт её за вас; читайте сообщение об ошибке. - Логика программы. Знание всех 35 слов не гарантирует, что цикл остановится вовремя: здесь помогают трассировка и тесты.
- Другой язык на уроке. В C++ и Паскале свои наборы зарезервированных слов, и в C++ их больше 35, так что таблица Python там не пригодится.
Миф: «
input— тоже ключевые слова, их нельзя переопределить». Это не подтверждается: это встроенные функции, иprint = 5выполнится без SyntaxError. Именно поэтому такая ошибка опаснее — её не видно сразу.
Миф: «Количество служебных слов в Python одинаковое во всех версиях». Единого числа не существует: список менялся, а с появлением мягких слов
matchиcaseграница стала ещё тоньше. Проверяйтеkeyword.kwlistв своей версии.
Чего делать нельзя
Нельзя относиться к зарезервированным словам как к обычным именам: Python не разрешит их занять и не станет угадывать, что вы имели в виду. Вот шесть правил, которые экономят время.
- Нельзя называть переменные
class,from,pass,inи другими словами из списка — будет SyntaxError. - Не следует писать
true,none,Ifс другим регистром: это уже не служебные слова, а неизвестные имена. - Не стоит занимать имена встроенных функций
list,sum,max,type: ошибки не будет сразу, но функция сломается. - Не стоит сравнивать с
Noneчерез ==, если можно написатьis None, как рекомендует PEP 8. - Не допускается оставлять блок пустым после
if,defилиclass: поставьтеpass. - Не следует учить все 35 слов наизусть до первой программы — запомнятся сами, когда понадобятся.
Самые частые слова, их назначение и короткие примеры собраны в компактной шпаргалке по Python. Её удобно держать открытой рядом с редактором, пока не выработается привычка.
Источники
[1] van Rossum G., Warsaw B., Coghlan N. PEP 8 — Style Guide for Python Code. Python Software Foundation, 2001.
[2] The Python Tutorial (официальная документация Python 3). Python Software Foundation.
[3] Приказ Минпросвещения России от 18.05.2023 № 370 «Об утверждении федеральной образовательной программы основного общего образования».
Вопросы и ответы
Сколько всего ключевых слов в Python?
В Python 3.13 их 35, плюс 4 мягких слова, которые служебные только в особых конструкциях. Точное число в вашей версии покажет len(keyword.kwlist).
Почему print не входит в список?
Потому что print — функция, а не часть грамматики. В Python 2 он был командой, но эта версия не поддерживается с 1 января 2020 года, и в Python 3 вызов пишется со скобками.
Можно ли назвать переменную Class или IF?
Технически можно: регистр отличается, и Python не увидит совпадения. Но такие имена путают читателя, поэтому лучше выбрать что-то понятное, например nomer_klassa.
Зачем нужны слова, которыми школьник не пользуется?
Они нужны в больших программах: асинхронный код, генераторы, обработка ошибок. Достаточно знать, что эти имена заняты, а разбираться с ними — когда задача потребует.
Есть ли в Scratch зарезервированные слова?
В Scratch команды — это блоки, их нельзя набрать с ошибкой, поэтому проблемы занятых имён почти нет. Переменную можно назвать хоть «если», и это не сломает проект.
Нужно ли знать этот список для ОГЭ?
Отдельного задания на список нет. Но в задании 16 программу пишут сами, и знание базовых слов — if, for, while, and, or — нужно, чтобы она вообще запустилась.