Python
Python шпаргалка со всеми ключевыми словами
Ключевые слова Python нельзя использовать как имена переменных, функций и классов. Они управляют синтаксисом языка: условиями, циклами, функциями, классами, импортом, ошибками и асинхронным кодом
Проверить актуальный список для своей версии Python можно так
import keyword
print(keyword.kwlist)
print(keyword.softkwlist)
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Логика и условия
| Слово | Для чего нужно |
|---|---|
if |
условие |
elif |
дополнительное условие |
else |
ветка по умолчанию |
and |
оба условия истинны |
or |
хотя бы одно условие истинно |
not |
отрицание |
is |
сравнение идентичности |
in |
проверка вхождения |
True |
истина |
False |
ложь |
None |
отсутствие значения |
value = None
if value is None:
print("значения нет")
Циклы
| Слово | Для чего нужно |
|---|---|
for |
цикл по коллекции |
while |
цикл по условию |
break |
остановить цикл |
continue |
перейти к следующему шагу |
for number in range(1, 4):
if number == 2:
continue
print(number)
Функции и классы
| Слово | Для чего нужно |
|---|---|
def |
объявить функцию |
return |
вернуть результат |
lambda |
короткая анонимная функция |
yield |
вернуть значение из генератора |
class |
объявить класс |
pass |
пустой блок |
def double(number):
return number * 2
print(double(5))
Ошибки и контекст
| Слово | Для чего нужно |
|---|---|
try |
выполнить рискованный код |
except |
обработать ошибку |
finally |
выполнить блок в конце |
raise |
вызвать ошибку |
assert |
проверить предположение |
with |
открыть контекст |
as |
дать имя внутри контекста или импорта |
try:
value = int("42")
except ValueError:
value = 0
print(value)
Импорт и область видимости
| Слово | Для чего нужно |
|---|---|
import |
подключить модуль |
from |
импортировать из модуля |
global |
обратиться к глобальному имени |
nonlocal |
обратиться к имени из внешней функции |
del |
удалить имя или элемент |
from pathlib import Path
print(Path.cwd())
Асинхронность
| Слово | Для чего нужно |
|---|---|
async |
объявить асинхронную функцию |
await |
дождаться результата |
Эти слова нужны в асинхронном коде: сетевые запросы, боты, серверы, параллельное ожидание операций
Soft keywords
match, case и _ могут иметь специальный смысл в сопоставлении с образцом, но не всегда ведут себя как обычные зарезервированные слова
status = "ready"
match status:
case "ready":
print("готово")
case _:
print("другой статус")
Ключевые слова и встроенные имена
list, dict, str, sum, type, id не являются ключевыми словами, но это встроенные имена. Их лучше не использовать как переменные
items = [1, 2, 3]
print(sum(items))
Плохой вариант
sum = 10
Так код перекрывает встроенную функцию sum
Проверка имени переменной
import keyword
names = ["class", "user_name", "for", "total"]
for name in names:
print(name, keyword.iskeyword(name))
Почему ключевые слова нельзя учить списком
Ключевые слова Python лучше группировать по смыслу. Тогда становится понятно, где они появляются в коде и почему их нельзя использовать как имена переменных
| Группа | Слова | Где встречаются |
|---|---|---|
| условия | if, elif, else, match, case |
выбор ветки |
| циклы | for, while, break, continue |
повторение действий |
| функции | def, return, lambda, yield |
создание поведения |
| классы | class, self не keyword |
описание объектов |
| ошибки | try, except, finally, raise, assert |
обработка проблем |
| импорт | import, from, as |
подключение модулей |
| логика | and, or, not, is, in |
условия и сравнения |
| контекст | with |
безопасная работа с ресурсами |
import keyword
print(keyword.kwlist)
print(keyword.iskeyword("class"))
print(keyword.iskeyword("username"))
Как keyword ломает переменную
Если назвать переменную ключевым словом, Python не сможет понять код
# так нельзя
# class = "Python"
class_name = "Python"
print(class_name)
Похожая проблема бывает со встроенными именами. list, dict, str, sum не являются ключевыми словами, но использовать их как переменные все равно плохая идея
items = [1, 2, 3]
total = sum(items)
print(total)
Где встречаются редкие слова
yield нужен для генераторов, global и nonlocal меняют область видимости, async и await используются в асинхронном коде. Новичку не обязательно сразу применять их в проектах, но полезно узнавать их при чтении чужого кода
def numbers():
yield 1
yield 2
for number in numbers():
print(number)
Самопроверка
Возьмите любое имя переменной и проверьте его через keyword.iskeyword(). Потом проверьте, не совпадает ли оно с популярными встроенными именами: list, dict, str, int, sum, max, min, input, print