📌 Динамическое изменение функций во время выполнения
Python позволяет менять код на лету! Вы можете подменять реализацию функций прямо во время выполнения программы.
💡 Это полезно, например, для тестирования или мока функций.
Пример:
Python позволяет менять код на лету! Вы можете подменять реализацию функций прямо во время выполнения программы.
💡 Это полезно, например, для тестирования или мока функций.
Пример:
def greet():
print("Hello!")
# Обычное поведение
greet() # Hello!
# Подменяем функцию
greet = lambda: print("Hi!")
greet() # Hi
🔥1
Челлендж: «Обратные слова»
Привет! Вот задача на логику и строки:
🔄 Суть задачи:
Напишите функцию, которая принимает строку и возвращает все слова в обратном порядке.
Пример:
Input: "Hello Python World"
Output: "World Python Hello"
✅ Усложнение для профи:
Сделайте так, чтобы слова выводились в обратном порядке букв внутри каждого слова.
Пример:
Input: "Hello Python World"
Output: "Olleh Nohtyp Dlrow"
💡 Подсказки:
1. Для разделения строки на слова используйте метод .split().
2. Попробуйте освоить срезы, например, [::-1] — это мощный инструмент в Python.
3. Чтобы сохранить пробелы в исходной строке, исследуйте методы работы с join и разделителями.
Кто первый справится? Пишите свои решения и обсуждаем! 🎉
Привет! Вот задача на логику и строки:
🔄 Суть задачи:
Напишите функцию, которая принимает строку и возвращает все слова в обратном порядке.
Пример:
Input: "Hello Python World"
Output: "World Python Hello"
✅ Усложнение для профи:
Сделайте так, чтобы слова выводились в обратном порядке букв внутри каждого слова.
Пример:
Input: "Hello Python World"
Output: "Olleh Nohtyp Dlrow"
💡 Подсказки:
2. Попробуйте освоить срезы, например, [::-1] — это мощный инструмент в Python.
3. Чтобы сохранить пробелы в исходной строке, исследуйте методы работы с join и разделителями.
Кто первый справится? Пишите свои решения и обсуждаем! 🎉
Декораторы классов и функций 🛠️
Декораторы — это магия Python, позволяющая изменять или дополнять поведение функций или классов. Это отличный инструмент для кэширования, логирования и контроля доступа. 🔒
🔍 Применение:
1. Логирование.
2. Управление доступом.
3. Кэширование (например, functools.lru_cache).
🔑 Результат выполнения:
Декораторы — это магия Python, позволяющая изменять или дополнять поведение функций или классов. Это отличный инструмент для кэширования, логирования и контроля доступа. 🔒
🔍 Применение:
1. Логирование.
2. Управление доступом.
3. Кэширование (например, functools.lru_cache).
def logger(func):
def wrapper(*args, **kwargs):
print(f"Running {func.__name__}")
return func(*args, **kwargs)
return wrapper
@logger
def say_hello():
print("Hello!")
say_hello()
🔑 Результат выполнения:
Hello!
🚀 Генераторы вместо списков
Генераторы позволяют обрабатывать данные по одному элементу, экономя память. Это особенно важно при работе с большими объемами данных.
💡 Чем генераторы лучше?
1. Они не занимают память сразу для всех элементов.
2. Работают лениво, то есть создают элементы "на лету".
Пример:
Попробуйте запустить это с обычным списком list. Ваши ресурсы быстро закончатся! 😄
Генераторы позволяют обрабатывать данные по одному элементу, экономя память. Это особенно важно при работе с большими объемами данных.
💡 Чем генераторы лучше?
1. Они не занимают память сразу для всех элементов.
2. Работают лениво, то есть создают элементы "на лету".
Пример:
# Генераторное выражение
gen = (x ** 2 for x in range(10**6))
print(next(gen)) # 0
print(next(gen)) # 1
# Генераторы можно использовать в цикле
for num in gen:
if num > 100:
break
print(num)
Попробуйте запустить это с обычным списком list. Ваши ресурсы быстро закончатся! 😄
👍3
Что здесь не так?
Найдите баг в коде.
❓ Вопрос: Может ли здесь что-то пойти не так? Как сделать код более безопасным?
📌 Подсказка:Подумайте о том, что будет, если кто-то изменит increment.
Найдите баг в коде.
def increment(value, step=1):
return value + step
data = [1, 2, 3]
for i in range(len(data)):
data[i] = increment(data[i])
print(data)
❓ Вопрос: Может ли здесь что-то пойти не так? Как сделать код более безопасным?
📌 Подсказка:
Декораторы классов и функций 🛠️
Декораторы — это магия Python, позволяющая изменять или дополнять поведение функций или классов. Это отличный инструмент для кэширования, логирования и контроля доступа. 🔒
🔍 Применение:
1. Логирование.
2. Управление доступом.
3. Кэширование (например, functools.lru_cache).
🔑 Результат выполнения:
Декораторы — это магия Python, позволяющая изменять или дополнять поведение функций или классов. Это отличный инструмент для кэширования, логирования и контроля доступа. 🔒
🔍 Применение:
1. Логирование.
2. Управление доступом.
3. Кэширование (например, functools.lru_cache).
def logger(func):
def wrapper(*args, **kwargs):
print(f"Running {func.__name__}")
return func(*args, **kwargs)
return wrapper
@logger
def say_hello():
print("Hello!")
say_hello()
🔑 Результат выполнения:
Hello!
🌌 Расширенная распаковка с * и **
Python умеет красиво разбирать структуры данных на части.
Пример:
💡 Как использовать ** для словарей?
Вы можете объединять словари с помощью **:
Python умеет красиво разбирать структуры данных на части.
Пример:
# Распаковка списка
numbers = [1, 2, 3, 4, 5]
head, *body, tail = numbers
print(head) # 1
print(body) # [2, 3, 4]
print(tail) # 5
💡 Как использовать ** для словарей?
Вы можете объединять словари с помощью **:
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3}
merged = {**dict1, **dict2}
print(merged) # {'a': 1, 'b': 2, 'c': 3}
👍1
Челлендж: «Число-палиндром»
Включаем математику и алгоритмы!
🔢 Суть задачи:
Напишите функцию, которая находит ближайшее к заданному числу положительное число-палиндром.
Пример:
✅ Усложнение для профи:
1. Сделайте так, чтобы функция работала с большими числами.
2. Для любителей математики: добавьте возможность искать сразу N ближайших палиндромов.
💡 Подсказки:
1. Палиндром — это число, которое одинаково читается слева направо и справа налево. Например, 121 или 1221.
2. Попробуйте преобразовать число в строку, чтобы проверить его на палиндромность.
3. Для ускорения поиска используйте цикл и проверку каждого числа.
4. Сможете найти элегантное решение? Дерзайте и делитесь! 👨💻👩💻
Включаем математику и алгоритмы!
🔢 Суть задачи:
Напишите функцию, которая находит ближайшее к заданному числу положительное число-палиндром.
Пример:
Input: 123
Output: 121
✅ Усложнение для профи:
1. Сделайте так, чтобы функция работала с большими числами.
2. Для любителей математики: добавьте возможность искать сразу N ближайших палиндромов.
💡 Подсказки:
2. Попробуйте преобразовать число в строку, чтобы проверить его на палиндромность.
3. Для ускорения поиска используйте цикл и проверку каждого числа.
4. Сможете найти элегантное решение? Дерзайте и делитесь! 👨💻👩💻
👍1
Менеджеры контекста 📂
Менеджеры контекста — это отличная возможность управлять ресурсами (например, файлами или подключениями), автоматически освобождая их после завершения работы. 👨💻
🔍 Применение:
1. Работа с файлами.
2. Подключение к базам данных.
3. Потоки и блокировки.
🔑 Результат выполнения:
Файл "test.txt" создается и в нем появляется строка Hello, world!.
Менеджеры контекста — это отличная возможность управлять ресурсами (например, файлами или подключениями), автоматически освобождая их после завершения работы. 👨💻
🔍 Применение:
1. Работа с файлами.
2. Подключение к базам данных.
3. Потоки и блокировки.
class FileManager:
def __init__(self, filename, mode):
self.file = open(filename, mode)
def __enter__(self):
return self.file
def __exit__(self, exc_type, exc_value, traceback):
self.file.close()
with FileManager("test.txt", "w") as f:
f.write("Hello, world!")
🔑 Результат выполнения:
Файл "test.txt" создается и в нем появляется строка Hello, world!.
Модули functools и itertools ⚙️
Эти модули дают вам мощные инструменты для работы с функциями и итераторами. Это настоящее волшебство Python! ✨
🔍 functools:
1. Каррирование (например, functools.partial).
2. Кэширование (например, functools.lru_cache).itertools:
3. Ленивые итераторы (например, itertools.chain, itertools.islice).
4. Комбинаторика (например, itertools.permutations).
🔑 Результат выполнения:
🎥 Подробнее:
https://www.youtube.com/watch?v=Qu3dThVy6KQ
Эти модули дают вам мощные инструменты для работы с функциями и итераторами. Это настоящее волшебство Python! ✨
🔍 functools:
1. Каррирование (например, functools.partial).
2. Кэширование (например, functools.lru_cache).itertools:
3. Ленивые итераторы (например, itertools.chain, itertools.islice).
4. Комбинаторика (например, itertools.permutations).
from functools import lru_cache
from itertools import permutations
@lru_cache(maxsize=None)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)
print(list(permutations([1, 2, 3])))
🔑 Результат выполнения:
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
🎥 Подробнее:
https://www.youtube.com/watch?v=Qu3dThVy6KQ
🌀 Модуль dataclasses
Создавать классы вручную с полями, конструктором и repr скучно. Модуль dataclasses делает это за вас.
Пример:
💡 Преимущества:
1. Генерация конструктора и методов (__init__, repr, __eq__).
2. Удобно для хранения данных.
Создавать классы вручную с полями, конструктором и repr скучно. Модуль dataclasses делает это за вас.
Пример:
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(1, 2)
print(p) # Point(x=1, y=2)
💡 Преимущества:
1. Генерация конструктора и методов (__init__, repr, __eq__).
2. Удобно для хранения данных.
👍1
Чему равен mystery(5)?
❓ Вопрос: Каков результат выполнения mystery(5)? Что произойдет, если передать большое число?
📌 Подсказка:Вспомните ограничения рекурсии в Python.
def mystery(n):
if n == 0:
return 0
return n + mystery(n - 1)
❓ Вопрос: Каков результат выполнения mystery(5)? Что произойдет, если передать большое число?
📌 Подсказка:
Анализ данных с помощью pandas 📉
Библиотека pandas — это мощный инструмент для анализа данных в Python. Он позволяет работать с таблицами (DataFrame), выполнять статистический анализ и манипуляции с данными.
🔍 Применение:
1. Обработка и анализ данных.
2. Загрузка и экспорт данных в различные форматы (CSV, Excel, SQL).
🔑 Результат выполнения:
Библиотека pandas — это мощный инструмент для анализа данных в Python. Он позволяет работать с таблицами (DataFrame), выполнять статистический анализ и манипуляции с данными.
🔍 Применение:
1. Обработка и анализ данных.
2. Загрузка и экспорт данных в различные форматы (CSV, Excel, SQL).
import pandas as pd
# Создаем DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# Получаем статистику
print(df.describe())
# Сохранение в CSV
df.to_csv('data.csv', index=False)
🔑 Результат выполнения:
Age
count 3.0
mean 30.0
std 5.0
min 25.0
25
Модуль pathlib для работы с путями 🛤️
Модуль pathlib предоставляет удобный интерфейс для работы с путями файлов и директорий. Это позволяет легко манипулировать путями, определять их компоненты и выполнять операции с ними.
🔍 Применение:
Работа с путями к файлам.
Проверка существования файлов и директорий.
Обработка путей в кросс-платформенных приложениях.
🔑 Результат выполнения:
Если директория не существует, она будет создана.
Модуль pathlib предоставляет удобный интерфейс для работы с путями файлов и директорий. Это позволяет легко манипулировать путями, определять их компоненты и выполнять операции с ними.
🔍 Применение:
Работа с путями к файлам.
Проверка существования файлов и директорий.
Обработка путей в кросс-платформенных приложениях.
from pathlib import Path
# Определяем путь
path = Path("example_directory")
# Проверяем, существует ли директория
if not path.exists():
path.mkdir()
# Проверяем тип файла
if path.is_dir():
print("It is a directory.")
🔑 Результат выполнения:
Если директория не существует, она будет создана.
Функциональный финал
Что напечатает код?
❓ Вопрос: Какой результат будет напечатан? Почему?
📌 Подсказка: Что происходит с определением функции в Python?
Что напечатает код?
def func(x):
return x * 2
func = lambda x: x + 2
print(func(10))
❓ Вопрос: Какой результат будет напечатан? Почему?
📌 Подсказка:
🔥1
Работа с файлами и директорими через os и shutil 🗂️
Модули os и shutil позволяют работать с файловой системой: создавать, удалять файлы и папки, копировать их, менять атрибуты.
🔍 Применение:
Управление файлами в проектах.
Автоматизация работы с файлами.
Обработка ошибок при работе с файлами.
🔑 Результат выполнения:
Директория my_folder создается, файл копируется, а затем директория удаляется.
Модули os и shutil позволяют работать с файловой системой: создавать, удалять файлы и папки, копировать их, менять атрибуты.
🔍 Применение:
Управление файлами в проектах.
Автоматизация работы с файлами.
Обработка ошибок при работе с файлами.
import os
import shutil
# Создание директории
os.makedirs('my_folder', exist_ok=True)
# Копирование файла
shutil.copy('source.txt', 'destination.txt')
# Удаление директории
shutil.rmtree('my_folder')
🔑 Результат выполнения:
Директория my_folder создается, файл копируется, а затем директория удаляется.
Работа с регулярными выражениями 🔍
Регулярные выражения (regex) позволяют искать, заменять и обрабатывать строки по заданным шаблонам. Это мощный инструмент для работы с текстом.
🔍 Применение:
Поиск и замена в строках.
Валидация данных (например, email).
Извлечение информации из текста.
🔑 Результат выполнения:
Регулярные выражения (regex) позволяют искать, заменять и обрабатывать строки по заданным шаблонам. Это мощный инструмент для работы с текстом.
🔍 Применение:
Поиск и замена в строках.
Валидация данных (например, email).
Извлечение информации из текста.
import re
pattern = r'\\d+' # Ищем все числа
text = "The house number is 42 and the zip code is 12345."
matches = re.findall(pattern, text)
print(matches) # Output: ['42', '12345']
🔑 Результат выполнения:
['42', '12345']