Элементы языка 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)