🐍 Укус питона 🐍
2.57K subscribers
1.01K photos
23 videos
285 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Что выведет код?
Anonymous Quiz
4%
0
16%
1
58%
-1
2%
-2
21%
Ошибку
Ищешь работу или стажировку в IT?

Тогда тебе точно будут полезны эти каналы:

БИГТЕХ – стажировки и вакансии
👉 ПОДПИСАТЬСЯ

Young & Junior - вакансии IT
👉 ПОДПИСАТЬСЯ

Young Стажёр - стажировки ИТ
👉 ПОДПИСАТЬСЯ

Junojobs
👉 ПОДПИСАТЬСЯ

Макс из < codereview />
👉 ПОДПИСАТЬСЯ

Помни! Твои скиллы достойны лучшего оффера.

Подпишись на эти каналы и рекрутеры однозначно заметят тебя.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
16%
[]
59%
[1]
13%
None
12%
Ошибка
Что выведет код?
Anonymous Quiz
38%
()
16%
[]
16%
[1, 2, 3]
29%
Ошибку
Что выведет код?
Anonymous Quiz
39%
4 3
33%
3 2
20%
4 2
0%
3 3
8%
Ошибку
Классика 🌞
Зачем нужно ключевое слово yield в Python?

yield используется для создания генераторов, которые возвращают данные по мере запроса, вместо хранения всего результата в памяти.

Пример:
def count_up_to(n):
count = 1
while count <= n:
yield count # Возвращает значение и приостанавливает выполнение
count += 1

for num in count_up_to(5):
print(num)


yield позволяет приостанавливать и возобновлять выполнение функции, экономя память и упрощая работу с потоками данных.
🐍 GIL в Python: как это влияет на многопоточность

Global Interpreter Lock (GIL) — это механизм в CPython, который ограничивает выполнение Python-кода одним потоком за раз, даже на многопроцессорных системах.

🔹 Зачем нужен GIL?

Он предотвращает проблемы с управлением памятью и упрощает работу интерпретатора. Однако из-за него многопоточные программы не могут эффективно использовать несколько ядер процессора.

🔹 Когда GIL мешает?

В CPU-интенсивных задачах (например, обработка данных, вычисления) многопоточность не дает прироста производительности.

В I/O-интенсивных задачах (сетевые запросы, работа с файлами) GIL почти не влияет, так как потоки могут освобождать блокировку во время ожидания операций ввода-вывода.

Решение:

Если нужна настоящая параллельность, используйте многопроцессорность (multiprocessing), которая запускает отдельные процессы без GIL, или попробуйте альтернативные реализации Python, такие как Jython или PyPy.
🔥 Mutable vs Immutable в Python

В Python все данные — это объекты, и они делятся на изменяемые (mutable) и неизменяемые (immutable).

🔹 Неизменяемые (immutable): нельзя изменить после создания
int, float, str, tuple, frozenset
x = "hello"
x += " world" # Создается новый объект, а не изменяется старый


🔹 Изменяемые (mutable): можно изменять без создания нового объекта
list, dict, set, bytearray
lst = [1, 2, 3]
lst.append(4) # Список изменяется в той же области памяти


⚠️ Важный нюанс

Передача изменяемых объектов в функцию может привести к неожиданным изменениям:

def modify_list(lst):
lst.append(99) # Изменяет оригинальный список!

my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # [1, 2, 3, 99]


Вывод:

Используйте tuple, если данные не должны изменяться.
Будьте осторожны с изменяемыми объектами при передаче в функции.
Если нужно копирование, используйте .copy() или deepcopy().