W3docs

Синтаксис Python — подробное руководство

Изучите синтаксис Python с нуля: отступы, переменные, комментарии, типы данных, циклы, условия и функции — с запускаемыми примерами.

Синтаксис Python — это набор правил, определяющих, как должна быть написана программа, чтобы интерпретатор мог её понять и выполнить. В отличие от таких языков, как C или Java, Python использует отступы вместо фигурных скобок для обозначения блоков кода, и читается почти как обычный английский текст — именно поэтому Python является популярным первым языком для начинающих.

В этой главе рассматриваются основные строительные блоки синтаксиса Python: отступы, операторы, комментарии, переменные, типы данных, операторы, управляющие конструкции, циклы, функции и несколько типичных ошибок.

Отступы

В Python отступы — это не вопрос стиля, а часть грамматики языка. Интерпретатор использует отступы для определения того, какие операторы принадлежат одному блоку. Стандартное соглашение (соблюдаемое большинством линтеров) — 4 пробела на каждый уровень.

python— editable, runs on the server

Смешение табуляций и пробелов в одном файле вызывает ошибку 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 имеет тип. Наиболее распространённые встроенные типы:

ТипПримерПримечания
int42Целое число произвольной точности
float3.1464-битное число с плавающей точкой
str"hello"Неизменяемая последовательность символов Unicode
boolTrue / FalseПодкласс int (True == 1, False == 0)
list[1, 2, 3]Упорядоченная изменяемая последовательность
tuple(1, 2, 3)Упорядоченная неизменяемая последовательность
dict{"a": 1}Отображение «ключ — значение»
set{1, 2, 3}Неупорядоченная коллекция уникальных значений
NoneTypeNoneПредставляет отсутствие значения

Проверить тип любого значения можно с помощью 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 перебирает любой итерируемый объект — список, строку, диапазон или другую последовательность:

python— editable, runs on the server

Используйте 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:

python— editable, runs on the server

Всегда убеждайтесь, что условие в конечном счёте станет 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

Практика

Практика
What are some general rules to follow when indenting code in Python as mentioned on w3docs.com?
What are some general rules to follow when indenting code in Python as mentioned on w3docs.com?
Was this page helpful?