⚖️ Старый и современный подход

⚡ Различия в двух словах

Классический подход: ручные циклы для обработки строк, C-style форматирование, накопление результата в переменной.

Современный подход: методы строк и генераторные выражения для фильтрации, f-strings для форматирования.

Вывод: Pythonic-код короче, быстрее и менее подвержен ошибкам.

📜 Классический подход из занятия

1. Очистка строки вручную

📄 examples/classic_clean.py
text = "Hello, World! 2025..."
result = ""
for char in text:
    if char.isalnum() or char.isspace():
        result += char
print(result)

2. Замена цифр на звёздочки

📄 examples/classic_stars.py
text = "My number is 123-456-789"
result = ""
for char in text:
    if char.isdigit():
        result += "*"
    else:
        result += char
print(result)

3. C-style форматирование

📄 examples/classic_format.py
name = "Alice"
age = 30
print("My name is %s and I am %d years old." % (name, age))

✅ Рекомендуемый современный вариант

1. Очистка строки через генераторное выражение

📄 examples/modern_clean.py
text = "Hello, World! 2025..."
result = "".join(char for char in text if char.isalnum() or char.isspace())
print(result)

2. Замена цифр через генераторное выражение

📄 examples/modern_stars.py
text = "My number is 123-456-789"
result = "".join("*" if char.isdigit() else char for char in text)
print(result)

3. Форматирование через f-strings

📄 examples/modern_format.py
name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")
Преимущества современного стиля:
  • Меньше кода — меньше возможностей для ошибок.
  • Методы строк и f-strings реализованы эффективно.
  • Читаемость: код ближе к описанию задачи.
  • Генераторные выражения и f-strings заменяют громоздкие циклы и конкатенацию.

🕰️ Когда классический подход всё ещё полезен

  • На начальном этапе обучения — чтобы понять, как устроены алгоритмы.
  • Когда встроенного метода недостаточно, например, нужна нестандартная логика.
  • Когда важно обработать каждый элемент отдельно и собрать сложный результат.

🔍 Как распознать устаревший код

Если цикл только перебирает символы для выполнения стандартной операции, его часто можно заменить:

text = "Hello, World! 2025..."

# устаревший подход
result = ""
for char in text:
    if char.isalnum() or char.isspace():
        result += char
print("classic:", result)

# современный подход
result = "".join(char for char in text if char.isalnum() or char.isspace())
print("modern:", result)
Проверить по документации: генераторные выражения и f-strings в данном контексте выходят за рамки исходного занятия. Подробности — в разделе Ресурсы.