Элементы языка Python: синтаксис и основные конструкции

Раздел: Синтаксис -> Основные элементы языка

Основные элементы языка Python: синтаксис и конструкции

Как создаются переменные в Python?

Основной способ: присваивание значения.

x = 10
name = "Alice"
pi = 3.14159

элементы языка python (элементы языка python)

Переменная создается в момент присваивания. Тип определяется автоматически.

Как присвоить значения нескольким переменным сразу?

a, b = 1, 2
print(a, b)  # 1 2

Множественное присваивание позволяет обменять значения без временной переменной: a, b = b, a.

Как использовать аннотацию типов?

x: int = 10
y: str
y = "hello"

Аннотации не влияют на выполнение, но помогают статическим анализаторам и разработчикам.

Как распаковать последовательность?

first, *middle, last = [1, 2, 3, 4, 5]
print(first, middle, last)  # 1 [2, 3, 4] 5

Звездочка собирает оставшиеся элементы в список.

Как использовать оператор моржа (walrus)?

if (n := len(data)) > 5:
    print(f"Длина {n} больше 5")

Позволяет присвоить и сразу проверить значение в выражении.

Типичные ошибки:

  • NameError при обращении к неопределенной переменной.
  • Присваивание изменяемых объектов (список, словарь) создает ссылку, а не копию. Изменение через одну переменную влияет на другую.
  • Путаница между = (присваивание) и == (сравнение).

Как реализовать условное ветвление?

age = 18
if age >= 18:
    print("Совершеннолетний")
elif age < 12:
    print("Ребенок")
else:
    print("Подросток")

Конструкция if-elif-else применяется для ветвления. Обязательно двоеточие и отступ.

Как использовать тернарный оператор?

status = "взрослый" if age >= 18 else "несовершеннолетний"

Как использовать match-case (Python 3.10+)?

match command:
    case "start":
        print("Запуск")
    case "stop":
        print("Остановка")
    case _:
        print("Неизвестная команда")

Как заменить цепочку if-elif словарем?

def handle_start(): return "Запуск"
def handle_stop(): return "Остановка"
handlers = {"start": handle_start, "stop": handle_stop}
result = handlers.get(command, lambda: "Неизвестно")()
  • Забыто двоеточие или неправильный отступ вызывает IndentationError.
  • В тернарном операторе нельзя использовать сложные блоки.

Как организовать повторение действий?

fruits = ["яблоко", "банан", "вишня"]
for fruit in fruits:
    print(fruit)

Цикл for обходит элементы любой итерабельной коллекции.

Как использовать while?

count = 0
while count < 3:
    print(count)
    count += 1

Как получить индекс с помощью enumerate?

for i, fruit in enumerate(fruits):
    print(i, fruit)

Как объединить несколько списков с zip?

names = ["Anna", "Bob"]
ages = [25, 30]
for name, age in zip(names, ages):
    print(name, age)

Как создать список с помощью спискового включения?

squares = [x**2 for x in range(10) if x % 2 == 0]
  • Бесконечный цикл при неправильном условии в while.
  • Изменение списка во время итерации может пропустить элементы.
  • Списковое включение не подходит для сложных побочных эффектов.

Как объявить и использовать функции?

def greet(name):
    return f"Привет, {name}!"
result = greet("Мир")
print(result)

Функция определяется с помощью def, возвращает значение через return.

Как создать анонимную функцию (lambda)?

square = lambda x: x**2
print(square(5))

Как задать значения по умолчанию?

def power(base, exp=2):
    return base ** exp
print(power(3))  # 9

Как принять произвольное число аргументов?

def sum_all(*args):
    return sum(args)
print(sum_all(1, 2, 3, 4))  # 10

Как принять именованные аргументы?

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")
print_info(name="Anna", age=25)

Как использовать декоратор?

def decorator(func):
    def wrapper():
        print("До вызова")
        func()
        print("После вызова")
    return wrapper

@decorator
def say_hello():
    print("Hello!")

say_hello()
  • Изменяемые объекты как значения по умолчанию (например, список) сохраняются между вызовами, что может вызвать неожиданное поведение.
  • Ошибка TypeError при несоответствии количества аргументов.

Расширенные примеры использования основных элементов Python

Переменные: распаковка и оператор моржа в сложных сценариях

Пример
# Распаковка вложенных структур
data = [("a", 1), ("b", 2)]
for (letter, number) in data:
    print(letter, number)

# Оператор моржа в списочном включении
import math
results = [y for x in range(10) if (y := math.sin(x)) > 0]
print(results)

# Обмен значений без временной переменной
a, b = 10, 20
a, b = b, a
print(a, b)  # 20 10
a 1
b 2
[0.8414709848078965, 0.9092974268256817, 0.1411200080598672, 0.9092974268256817, 0.8414709848078965, 0.9893582466233818, 0.6569865987187891]
20 10

Условные конструкции: match-case с сопоставлением по структурам

Пример
# Сопоставление кортежей и списков
point = (1, 2)
match point:
    case (0, 0):
        print("Начало координат")
    case (x, 0):
        print(f"На оси X, x={x}")
    case (0, y):
        print(f"На оси Y, y={y}")
    case (x, y):
        print(f"Точка ({x}, {y})")

# Сопоставление с условием
value = 5
match value:
    case int() as n if n > 0:
        print(f"Положительное целое: {n}")
    case int() as n if n == 0:
        print("Ноль")
    case str() as s:
        print(f"Строка: {s}")
Точка (1, 2)
Положительное целое: 5

Циклы: вложенные списковые включения и itertools

Пример
# Таблица умножения списковым включением
table = [[i*j for j in range(1, 6)] for i in range(1, 6)]
print(table)

# itertools.product для декартова произведения
from itertools import product
colors = ['red', 'green']
sizes = ['S', 'M', 'L']
pairs = list(product(colors, sizes))
print(pairs)

# Генератор с условием
even_squares = (x**2 for x in range(20) if x % 2 == 0)
print(list(even_squares))
[[1, 2, 3, 4, 5], [2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [4, 8, 12, 16, 20], [5, 10, 15, 20, 25]]
[('red', 'S'), ('red', 'M'), ('red', 'L'), ('green', 'S'), ('green', 'M'), ('green', 'L')]
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

Функции: замыкания и декораторы с параметрами

Пример
# Замыкание: функция, запоминающая состояние
def make_multiplier(n):
    def multiplier(x):
        return x * n
    return multiplier

double = make_multiplier(2)
triple = make_multiplier(3)
print(double(5), triple(5))  # 10 15

# Декоратор с аргументом
def repeat(times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(times):
                func(*args, **kwargs)
        return wrapper
    return decorator

@repeat(3)
def say(text):
    print(text)

say("Привет")
10 15
Привет
Привет
Привет

Элементы языка Python - comments

En
элементы языка python (python)