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

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

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

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

Реклама на бирже - https://telega.in/c/Python_per_month
Download Telegram
⚙️ inspect.signature()

В Python функция inspect.signature() из модуля inspect позволяет получать информацию о сигнатуре функций и методов. Это полезно для анализа кода во время выполнения, например, для отладки или динамического вызова функций.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🆒2❤‍🔥1🏆1
🤔 Как это работает? — Python: List Comprehension

List comprehension — это мощный способ создавать списки в Python одной строкой. Давайте разберём, как работает этот синтаксис.

➡️ Как это работает:

• range(10) генерирует числа от 0 до 9.
Для каждого числа x из range(10) выполняется выражение x**2, которое возводит x в квадрат.
Результаты собираются в список squares.

Развернутый аналог:
squares = []
for x in range(10):
squares.append(x**2)
print(squares) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤‍🔥2
Антипаттерн недели: Использование изменяемых объектов по умолчанию

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

Значение по умолчанию ([]) создаётся один раз при определении функции и используется повторно для всех вызовов. Поэтому изменения сохраняются между вызовами функции.

✔️ Как исправить:

Используйте None и создавайте новый список внутри функции:
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items

print(add_item(1)) # [1]
print(add_item(2)) # [2] — теперь всё работает правильно!


Избегайте изменяемых значений по умолчанию, чтобы не создавать неожиданных побочных эффектов.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33❤‍🔥2
Напоминаю, что у нас есть свой чат, где вы можете задать свой вопрос
https://t.me/Chat_for_Python
❤‍🔥4👍2
⚙️ sys.setrecursionlimit()

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

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤‍🔥2
Что будет выведено при выполнении кода?

Пояснение
⬇️
Функция generator возвращает 1 и 2 с помощью yield. При следующем вызове next(gen) выполняется return 3, вызывая StopIteration с атрибутом value равным 3. Это значение доступно через e.value.


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤‍🔥3🏆1
⚙️ sys.intern()

В Python функция sys.intern() оптимизирует хранение строк, создавая их в единственном экземпляре в памяти (интернирование). Это ускоряет сравнение строк за счёт сравнения ссылок, а не их содержимого.

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

Что такое yield from в Python и как оно помогает при работе с большими наборами данных?

Ответ ⬇️
yield from используется для делегирования работы с подгенераторами в Python. Это позволяет "плоско" и эффективно обрабатывать вложенные данные, избегая лишних циклов и улучшая производительность.

Пример использования ⚙️
def flatten(nested_list):
for item in nested_list:
if isinstance(item, list):
yield from flatten(item) # Делегирует генерацию к вложенному списку
else:
yield item

nested_list = [1, [2, [3, 4], 5], 6]
for num in flatten(nested_list):
print(num)


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

Функция zip() в Python используется для объединения нескольких итерируемых объектов (например, списков) в один итератор кортежей. Каждый кортеж содержит элементы, которые находятся на одинаковых позициях в исходных итерируемых объектах.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤‍🔥1🤔1
➡️ Интересный факт о языке: Множественное присваивание

Множественное присваивание позволяет в одной строке присвоить значения сразу нескольким переменным. Также это позволяет легко обменивать значения между переменными без использования временной переменной.

Как это работает:

Справа от знака = создаётся кортеж значений.
Эти значения распаковываются и присваиваются переменным слева.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤‍🔥1🤔1
Что будет выведено при выполнении кода?

Пояснение
⬇️
Класс D наследуется от B и C. Вызов d.greet() ищет метод greet согласно MRO. Порядок поиска: D -> B -> C -> A. Поэтому вызывается метод greet из класса B.


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤‍🔥2
⚙️ inspect.getsource()

Метод inspect.getsource() из модуля inspect позволяет получить исходный код функции, класса или метода. Это полезно для анализа кода во время выполнения или создания инструментов для отладки и документации.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤‍🔥4🏆2
⚙️ sys.getsizeof()

Метод sys.getsizeof() позволяет узнать размер объекта в памяти, включая дополнительные данные, связанные с этим объектом. Это полезно для анализа потребления памяти в приложении.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤‍🔥2
⚙️ ast.literal_eval()

Метод ast.literal_eval() из модуля ast безопасно вычисляет выражения Python из строки. Это полезно для обработки данных из текстовых файлов или ввода, где требуется парсинг структур данных, таких как списки, словари или числа.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤‍🔥2
⚙️ Улучшение работы со строками

Конкатенация строк через + в цикле создаёт множество временных объектов, что замедляет выполнение программы. Вместо этого используйте join().

Проблема: При конкатенации строк через + создаётся новый объект строки на каждом шаге.

✔️ Решение: Используйте str.join(), который работает быстрее, так как заранее выделяет память для итоговой строки.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29❤‍🔥4
⚙️ weakref.ref()

weakref.ref() из модуля weakref создаёт слабую ссылку на объект. Слабая ссылка не увеличивает счётчик ссылок объекта, позволяя ему быть удалённым сборщиком мусора, если больше нет сильных ссылок на него.

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

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

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤‍🔥1🗿1
Что будет выведено при выполнении кода?

Пояснение
⬇️
Counter из collections подсчитывает количество повторений каждого элемента в data. Значение для 'apple' равно 3. Для отсутствующего ключа ('grape') возвращается 0, а не KeyError.


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔4❤‍🔥2