Python Learning
32.6K subscribers
1.95K photos
8 videos
7 files
965 links
№ 4974297878

Обучающий канал по Python

Ссылка для друга - https://t.me/+I7jrAQKR5xAyYTAy

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Python_per_month
Download Telegram
Что будет выведено при выполнении кода?

Пояснение
⬇️
Декоратор заменяет функцию say_hello на функцию wrapper. Когда вызывается say_hello, выполняется wrapper, который сначала выводит Before function call, затем вызывает оригинальную функцию func() (say_hello) и выводит её результат Hello!. После этого завершается фразой After function call.


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔2😱1
Вопрос на собеседовании

Как работает функция zip() в Python, что произойдет, если переданные итерируемые объекты имеют разную длину, и как можно преобразовать результат работы этой функции обратно в оригинальные последовательности?

Ответ ⬇️
Функция zip() берет несколько итерируемых объектов и объединяет их в один итератор, который возвращает кортежи, сформированные из элементов входных последовательностей. Если переданные итерируемые объекты имеют разную длину, zip() завершает свою работу, как только самая короткая из последовательностей исчерпается.

Чтобы преобразовать результат zip() обратно в исходные последовательности, можно использовать распаковку с * (оператор звездочка), которая разделяет кортежи на отдельные списки.


Пример использования ⚙️
# Объединяем два списка
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30]

# zip объединяет элементы двух списков
zipped = zip(names, ages)
print(list(zipped)) # [('Alice', 25), ('Bob', 30)]

# Разъединяем с помощью распаковки
zipped_again = zip(names, ages) # Создаем заново, так как zip() исчерпаем
unzipped_names, unzipped_ages = zip(*zipped_again)

print(unzipped_names) # ('Alice', 'Bob')
print(unzipped_ages) # (25, 30)


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
⚙️heapq.nlargest() и heapq.nsmallest()

В Python функции heapq.nlargest() и heapq.nsmallest() позволяют получить n наибольших или наименьших элементов из коллекции. Это удобно для задач, связанных с выборкой экстремальных значений.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
⚙️ string.Template

В Python класс string.Template из модуля string позволяет подставлять значения в строки с использованием плейсхолдеров. Это удобный способ работы с шаблонами текста.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
👩‍💻 Задача по Python: Объединение и сортировка двух списков

Напишите функцию, которая принимает два списка чисел, объединяет их, удаляет дубликаты и возвращает отсортированный список.

Пример:

list1 = [3, 1, 4, 1, 5]
list2 = [9, 2, 6, 5, 3, 5]
result = merge_and_sort(list1, list2)
print(result)
# Ожидаемый результат: [1, 2, 3, 4, 5, 6, 9]


Решение задачи на картинке ☝️

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🤔2
⚙️ reversed()

В Python встроенная функция reversed() возвращает итератор, который перебирает элементы последовательности в обратном порядке. Это удобно для работы с последовательностями, когда нужен обратный порядок.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🆒2
⚙️str.startswith() и str.endswith()

В Python методы str.startswith() и str.endswith() проверяют, начинается или заканчивается строка на указанную подстроку. Это удобно для работы с текстом, например, валидации данных.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2
⚙️round()

В Python функция round() округляет число до заданного количества знаков после запятой. Это полезно для форматирования чисел и работы с математическими расчётами.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🆒4
⚙️math.ceil() и math.floor()

В Python функции math.ceil() и math.floor() из модуля math используются для округления чисел вверх или вниз до ближайшего целого значения. Это полезно для контроля направления округления.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Вопрос на собеседовании

Что такое __slots__ в Python, как они работают, и в каких случаях их стоит использовать?

Ответ ⬇️
__slots__ — это специальный атрибут класса, который определяет фиксированный набор атрибутов для экземпляров класса. Это уменьшает потребление памяти, так как вместо хранения атрибутов в стандартном словаре (__dict__), они хранятся в виде фиксированной структуры. __slots__ полезны, если нужно создавать большое количество объектов одного класса, где экономия памяти критична. Однако __slots__ ограничивает добавление новых атрибутов, что делает классы менее гибкими.

Пример использования ⚙️
class OptimizedClass:
__slots__ = ['name', 'age'] # Указываем фиксированные атрибуты

def __init__(self, name, age):
self.name = name
self.age = age

# Пример использования
obj = OptimizedClass('Иван', 30)
print(obj.name) # Иван
print(obj.age) # 30

try:
obj.address = 'Москва' # Ошибка: нельзя добавить новый атрибут
except AttributeError as e:
print(e) # "'OptimizedClass' object has no attribute 'address'"


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
⚙️list.append()

В Python метод list.append() добавляет элемент в конец списка. Это самый простой способ динамически расширять список.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
⚙️set.intersection()

В Python метод set.intersection() возвращает пересечение множеств, то есть элементы, которые присутствуют во всех переданных множествах. Это удобно для нахождения общих данных.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤔1
⚙️ map()

В Python функция map() позволяет применить заданную функцию к каждому элементу итерируемого объекта, создавая новый объект с результатами. Это удобно для преобразования данных.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
👩‍💻 Задача по Python: Уникальные элементы с сохранением порядка

Напишите функцию, которая принимает список и возвращает новый список, содержащий только уникальные элементы, сохраняя их порядок появления.

Пример:

numbers = [1, 2, 2, 3, 4, 3, 5, 1]
result = unique_order(numbers)
print(result)
# Ожидаемый результат: [1, 2, 3, 4, 5]


Решение задачи на картинке ☝️

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
⚙️ functools.lru_cache

В Python декоратор functools.lru_cache кэширует результаты вызовов функции, что позволяет ускорить выполнение повторяющихся вычислений. Это удобно для оптимизации функций с дорогостоящими вычислениями.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2
⚙️ heapq.heappush() и heapq.heappop()

В Python модуль heapq предоставляет функции для работы с кучами (heap) — структурами данных для управления приоритетами. heappush() добавляет элемент в кучу, а heappop() удаляет наименьший элемент.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🏆1
⚙️ min() и max()

В Python функции min() и max() используются для нахождения минимального и максимального значений в итерируемых объектах. Эти функции поддерживают кастомные критерии сравнения.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2
Вопрос на собеседовании

Что такое генераторы Python, как работает метод send() в генераторах, и как его можно использовать для управления их поведением?

Ответ ⬇️
Генераторы в Python — это функции, которые используют yield для возврата значения и приостановки выполнения. Метод send() позволяет отправлять данные обратно в генератор, которые затем могут быть использованы внутри генератора при следующем возобновлении. Это делает генераторы двусторонними, позволяя не только получать значения, но и передавать данные в них.

Пример использования ⚙️
def interactive_generator():
value = yield "Начало" # Возвращаем начальное значение
while value:
value = yield f"Вы отправили: {value}" # Возвращаем обработанное значение

gen = interactive_generator()
print(next(gen)) # "Начало"
print(gen.send("Привет")) # "Вы отправили: Привет"
print(gen.send("Python")) # "Вы отправили: Python"
gen.close() # Завершаем генератор


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
⚙️ vars()

В Python функция vars() возвращает словарь атрибутов объекта или локальные переменные, если объект не указан. Это удобно для работы с объектами или отладки.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍6