Пример 1. Docstring и help()
# docstring_example.py
def greet(name: str) -> str:
"""Возвращает строку приветствия.
:param name: Имя пользователя.
:return: Приветственное сообщение.
"""
return f"Hello, {name}!"
print(greet("Alice"))
print(greet.__doc__)
help(greet)
Пример 2. Аннотации типов
# type_hints_example.py
def add(a: int, b: int) -> int:
"""Возвращает сумму двух целых чисел."""
return a + b
def convert_to_celsius(fahrenheit: float) -> float:
"""Конвертирует температуру из Фаренгейта в Цельсий."""
return (fahrenheit - 32) * 5 / 9
def is_even(number: int) -> bool:
"""Определяет, является ли число чётным."""
return number % 2 == 0
def log_message(message: str) -> None:
"""Выводит сообщение в консоль."""
print(f"LOG: {message}")
print(add(3, 5))
print(convert_to_celsius(68.0))
print(is_even(4))
log_message("start")
Пример 3. Инверсия словаря
# invert_dict.py
original_dict = {"a": 1, "b": 2, "c": 3}
inverted_dict = {value: key for key, value in original_dict.items()}
print("Инверсированный словарь:", inverted_dict)
Пример 4. Замена чисел на слова
# numbers_to_words.py
number_to_word = {1: "один", 2: "два", 3: "три"}
data = {"x": 1, "y": 2, "z": 3}
translated = {
key: number_to_word.get(value, value)
for key, value in data.items()
}
print(translated)
Пример 5. Факториал
# factorial.py
def factorial(n: int) -> int:
"""Возвращает факториал неотрицательного целого числа."""
if n == 0 or n == 1:
return 1
return n * factorial(n - 1)
print(factorial(5)) # 120
Пример 6. Бинарный поиск
# binary_search.py
from typing import Optional
def binary_search(
arr: list[int],
target: int,
left: int,
right: int
) -> Optional[int]:
"""Ищет target в отсортированном списке arr. Возвращает индекс или None."""
if left > right:
return None
mid = (left + right) // 2
if arr[mid] == target:
return mid
if arr[mid] < target:
return binary_search(arr, target, mid + 1, right)
return binary_search(arr, target, left, mid - 1)
array = [1, 3, 5, 7, 9, 11, 13]
print(binary_search(array, 5, 0, len(array) - 1)) # 2
print(binary_search(array, 13, 0, len(array) - 1)) # 6
print(binary_search(array, 8, 0, len(array) - 1)) # None
Пример 7. Хвостовая рекурсия и итерация
# tail_vs_iterative.py
def factorial_tail(n: int, accumulator: int = 1) -> int:
"""Хвостовая рекурсия (не оптимизируется в Python)."""
if n == 0 or n == 1:
return accumulator
return factorial_tail(n - 1, n * accumulator)
def factorial_iterative(n: int) -> int:
"""Итеративный факториал."""
accumulator = 1
while n > 1:
accumulator *= n
n -= 1
return accumulator
print(factorial_tail(5))
print(factorial_iterative(5))
Пример 8. Собственный аналог deepcopy
# custom_deepcopy.py
def deep_copy(data):
"""Рекурсивно копирует списки, кортежи, множества и словари."""
if isinstance(data, list):
return [deep_copy(item) for item in data]
if isinstance(data, dict):
return {key: deep_copy(value) for key, value in data.items()}
if isinstance(data, set):
return {deep_copy(item) for item in data}
if isinstance(data, tuple):
return tuple(deep_copy(item) for item in data)
return data
original = [[1, 2], (4, [5, 6], {7, 8}), {"a": 9, "b": [10, 11]}]
copied = deep_copy(original)
original[1][1][0] = 0
print("Оригинал:", original)
print("Копия: ", copied)
Как запустить в VS Code
- Создайте файл, например
summary_12_examples.py.
- Скопируйте код одного из примеров выше.
- Откройте терминал в VS Code (Ctrl + `).
- Убедитесь, что активировано виртуальное окружение.
- Запустите:
python summary_12_examples.py