Синтаксис Python — подробное руководство
Изучите синтаксис Python с нуля: отступы, переменные, комментарии, типы данных, циклы, условия и функции — с запускаемыми примерами.
Синтаксис Python — это набор правил, определяющих, как должна быть написана программа, чтобы интерпретатор мог её понять и выполнить. В отличие от таких языков, как C или Java, Python использует отступы вместо фигурных скобок для обозначения блоков кода, и читается почти как обычный английский текст — именно поэтому Python является популярным первым языком для начинающих.
В этой главе рассматриваются основные строительные блоки синтаксиса Python: отступы, операторы, комментарии, переменные, типы данных, операторы, управляющие конструкции, циклы, функции и несколько типичных ошибок.
Отступы
В Python отступы — это не вопрос стиля, а часть грамматики языка. Интерпретатор использует отступы для определения того, какие операторы принадлежат одному блоку. Стандартное соглашение (соблюдаемое большинством линтеров) — 4 пробела на каждый уровень.
Смешение табуляций и пробелов в одном файле вызывает ошибку IndentationError. Используйте что-то одно последовательно — руководство по стилю Python (PEP 8) рекомендует пробелы.
Типичные ошибки отступов
# IndentationError: expected an indented block
if True:
print("oops") # missing indentation# IndentationError: unexpected indent
x = 1
y = 2 # indented for no reasonОператоры и перенос строк
Каждый оператор Python обычно занимает одну строку и не заканчивается точкой с запятой (хотя технически точка с запятой допустима). Если оператор слишком длинный, его можно разбить на несколько строк двумя способами.
Неявный перенос внутри скобок — любая открытая (, [ или { позволяет продолжить строку на следующей:
total = (
100
+ 200
+ 300
)
print(total) # 600Явный перенос с обратной косой чертой (\):
result = 1 + 2 + 3 \
+ 4 + 5
print(result) # 15Можно также разместить несколько операторов на одной строке через точку с запятой, но это не рекомендуется:
x = 1; y = 2; print(x + y) # works, but avoid this styleКомментарии
Комментарии поясняют намерения и игнорируются интерпретатором. В Python есть два вида комментариев.
Однострочные комментарии
Комментарий начинается с символа #. Всё, что идёт после # на той же строке, игнорируется:
# Calculate the area of a circle
radius = 5
area = 3.14159 * radius ** 2 # ** is the exponentiation operator
print(area)Многострочные комментарии (строки документации)
В Python нет специального синтаксиса для блочных комментариев. По соглашению используются строки в тройных кавычках. Когда они размещаются в начале функции, класса или модуля, они становятся строками документации (docstrings) — доступными во время выполнения через help():
def greet(name):
"""Return a greeting for the given name.
Args:
name (str): The person's name.
"""
return f"Hello, {name}!"
print(greet("Alice")) # Hello, Alice!Переменные и присваивание
Переменная создаётся в момент присваивания ей значения. Python является динамически типизированным языком, поэтому тип объявлять не нужно:
x = 10 # integer
pi = 3.14 # float
name = "Alice" # string
active = True # booleanМожно присвоить значения нескольким переменным в одной строке:
a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3Или присвоить одно и то же значение нескольким переменным сразу:
x = y = z = 0
print(x, y, z) # 0 0 0Имена переменных чувствительны к регистру (age, Age и AGE — три разные переменные). Подробнее о правилах именования и соглашениях см. в главе Переменные Python.
Типы данных
Каждое значение в Python имеет тип. Наиболее распространённые встроенные типы:
| Тип | Пример | Примечания |
|---|---|---|
int | 42 | Целое число произвольной точности |
float | 3.14 | 64-битное число с плавающей точкой |
str | "hello" | Неизменяемая последовательность символов Unicode |
bool | True / False | Подкласс int (True == 1, False == 0) |
list | [1, 2, 3] | Упорядоченная изменяемая последовательность |
tuple | (1, 2, 3) | Упорядоченная неизменяемая последовательность |
dict | {"a": 1} | Отображение «ключ — значение» |
set | {1, 2, 3} | Неупорядоченная коллекция уникальных значений |
NoneType | None | Представляет отсутствие значения |
Проверить тип любого значения можно с помощью type():
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("hello")) # <class 'str'>
print(type(True)) # <class 'bool'>
print(type(None)) # <class 'NoneType'>Подробнее о типах см. в главе Типы данных Python.
Операторы
Python поддерживает несколько категорий операторов.
Арифметические операторы
a, b = 10, 3
print(a + b) # 13 — addition
print(a - b) # 7 — subtraction
print(a * b) # 30 — multiplication
print(a / b) # 3.3333... — true division (always returns float)
print(a // b) # 3 — floor division
print(a % b) # 1 — modulo (remainder)
print(a ** b) # 1000 — exponentiationОператоры сравнения
Операторы сравнения возвращают True или False:
print(5 == 5) # True
print(5 != 3) # True
print(5 > 3) # True
print(5 < 3) # False
print(5 >= 5) # True
print(5 <= 4) # FalseЛогические операторы
print(True and False) # False
print(True or False) # True
print(not True) # FalseПолный справочник с операторами присваивания, побитовыми и операторами идентичности см. в главе Операторы Python.
Строки
Строки — это последовательности символов Unicode. Их можно заключать в одинарные, двойные или тройные кавычки:
s1 = "Hello, World!"
s2 = 'Hello, World!'
s3 = """This string
spans multiple lines."""f-строки (форматированные строковые литералы)
Появившиеся в Python 3.6, f-строки являются рекомендуемым способом встраивания выражений в строки:
name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")
# My name is Alice and I am 30 years old.Распространённые операции со строками
s = "python"
print(s.upper()) # PYTHON
print(s.capitalize()) # Python
print(len(s)) # 6
print(s[0]) # p (indexing)
print(s[1:4]) # yth (slicing)
print(s + " rocks") # python rocks (concatenation)Списки
Список — это упорядоченная изменяемая коллекция. Элементы могут быть разных типов:
fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # apple
print(fruits[-1]) # cherry (negative index = from end)
fruits.append("date")
print(fruits) # ['apple', 'banana', 'cherry', 'date']
print(len(fruits)) # 4Управляющие конструкции
Оператор if / elif / else
Используйте if, elif (else-if) и else для ветвления по условиям:
score = 75
if score >= 90:
grade = "A"
elif score >= 75:
grade = "B"
elif score >= 60:
grade = "C"
else:
grade = "F"
print(f"Grade: {grade}") # Grade: BВажный момент: в отличие от многих языков, в Python нет конструкции switch/case до версии Python 3.10. Для нескольких условий на одну переменную используйте цепочки elif или поиск в словаре. В Python 3.10+ появился оператор match как альтернатива структурного сопоставления с образцом.
Полный справочник см. в главе Python If Else.
Цикл for
Цикл for перебирает любой итерируемый объект — список, строку, диапазон или другую последовательность:
Используйте range() для повторения заданного числа раз:
for i in range(5):
print(i) # 0, 1, 2, 3, 4Используйте enumerate(), когда нужны и индекс, и значение:
colors = ["red", "green", "blue"]
for index, color in enumerate(colors):
print(index, color)
# 0 red
# 1 green
# 2 blueЦикл while
Цикл while повторяется, пока его условие равно True:
Всегда убеждайтесь, что условие в конечном счёте станет False, иначе получится бесконечный цикл.
break, continue и else в циклах
break— немедленно завершает циклcontinue— пропускает остаток текущей итерации и переходит к следующейelseв цикле — выполняется после нормального завершения цикла (то есть без срабатыванияbreak)
for n in range(10):
if n == 3:
continue # skip 3
if n == 6:
break # stop at 6
print(n)
# 0 1 2 4 5Функции
Функции позволяют упаковать многократно используемую логику под одним именем. Функция определяется с помощью def:
def add(a, b):
"""Return the sum of a and b."""
return a + b
result = add(3, 4)
print(result) # 7Значения параметров по умолчанию
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet("Alice") # Hello, Alice!
greet("Bob", "Hi") # Hi, Bob!Возврат нескольких значений
Функции Python могут возвращать несколько значений в виде кортежа:
def min_max(numbers):
return min(numbers), max(numbers)
low, high = min_max([3, 1, 4, 1, 5, 9])
print(low, high) # 1 9Подробнее см. в главе Функции Python.
Ключевые слова
Python резервирует определённые слова для нужд языка. Их нельзя использовать в качестве имён переменных:
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yieldЕсли случайно использовать ключевое слово в качестве имени переменной, Python выдаёт ошибку SyntaxError:
# SyntaxError: invalid syntax
for = 10Модули и импорт
Код Python организован в модули (файлы .py). Содержимое модуля импортируется с помощью import:
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592653589793Импорт конкретных имён с помощью from ... import:
from math import sqrt, pi
print(sqrt(25)) # 5.0Используйте псевдоним для сокращения длинных имён модулей:
import datetime as dt
today = dt.date.today()
print(today) # e.g. 2026-06-19