uk
Feedback
🐍 Укус питона 🐍

🐍 Укус питона 🐍

Відкрити в Telegram

🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @tg_adminisrator 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython

Показати більше
2 334
Підписники
Немає даних24 години
-117 днів
-3730 день
Архів дописів
Что выведет код?
Anonymous voting

photo content

🐍 GIL в Python: как это влияет на многопоточность Global Interpreter Lock (GIL) — это механизм в CPython, который ограничива
🐍 GIL в Python: как это влияет на многопоточность Global Interpreter Lock (GIL) — это механизм в CPython, который ограничивает выполнение Python-кода одним потоком за раз, даже на многопроцессорных системах. 🔹 Зачем нужен GIL? Он предотвращает проблемы с управлением памятью и упрощает работу интерпретатора. Однако из-за него многопоточные программы не могут эффективно использовать несколько ядер процессора. 🔹 Когда GIL мешает? В CPU-интенсивных задачах (например, обработка данных, вычисления) многопоточность не дает прироста производительности. В I/O-интенсивных задачах (сетевые запросы, работа с файлами) GIL почти не влияет, так как потоки могут освобождать блокировку во время ожидания операций ввода-вывода. ✅ Решение: Если нужна настоящая параллельность, используйте многопроцессорность (multiprocessing), которая запускает отдельные процессы без GIL, или попробуйте альтернативные реализации Python, такие как Jython или PyPy.

photo content

Зачем нужно ключевое слово 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 позволяет приостанавливать и возобновлять выполнение функции, экономя память и упрощая работу с потоками данных.

Что выведет код?
Anonymous voting

photo content

photo content

⚡️ Как работает super() в Python? super() позволяет вызывать методы родительского класса, обеспечивая правильное наследование и расширение функционала. ✅ Пример:
class Parent:
    def greet(self):
        return "Hello from Parent"

class Child(Parent):
    def greet(self):
        return super().greet() + " and Child"

obj = Child()
print(obj.greet())  # "Hello from Parent and Child"
super() особенно полезен при множественном наследовании, так как помогает вызывать методы родительских классов без явного указания их имен.

Что такое дескрипторы в Python и зачем они нужны? Дескриптор — это объект, который управляет доступом к атрибутам класса через методы get, set и delete. Они позволяют гибко контролировать поведение атрибутов. ✅ Пример:
class Descriptor:
    def init(self, value=None):
        self.value = value

    def get(self, instance, owner):
        print("Getting value")
        return self.value

    def set(self, instance, value):
        print("Setting value")
        self.value = value

class MyClass:
    attr = Descriptor()

obj = MyClass()
obj.attr = 42  # Setting value
print(obj.attr)  # Getting value → 42
Дескрипторы используются в свойствах (property), ORM, логировании доступа и валидации данных. Они помогают гибко управлять состоянием объектов и позволяют писать более чистый код.

Что выведет код?
Anonymous voting

photo content

photo content

⚙️ Как работает metaclass в Python? В Python метаклассы управляют созданием классов, так же как классы управляют созданием объектов. Они позволяют автоматизировать и настраивать процесс создания классов. ✅ Пример:
class Meta(type):
    def new(cls, name, bases, dct):
        dct["custom_attr"] = 42
        return super().new(cls, name, bases, dct)

class MyClass(metaclass=Meta):
    pass

print(MyClass.custom_attr)  # 42
Метаклассы позволяют добавлять атрибуты, проверять код, изменять поведение классов перед их созданием. Это мощный инструмент, но его стоит использовать только при необходимости, например, в ORM, фреймворках и API.

🔍 Как работает staticmethod vs classmethod в Python? В Python есть два специальных декоратора для методов класса: @staticmethod и @classmethod. Они позволяют работать без создания экземпляра, но имеют ключевые различия. ✅ Пример:
class Example:
    class_attr = "Hello"

    @staticmethod
    def static_method():
        return "I'm a static method"

    @classmethod
    def class_method(cls):
        return f"Class method: {cls.class_attr}"

print(Example.static_method())  # I'm a static method
print(Example.class_method())   # Class method: Hello
@staticmethod ведёт себя как обычная функция внутри класса, не имея доступа к атрибутам класса или экземпляра. @classmethod, наоборот, получает ссылку на класс (cls) и может изменять его атрибуты. Используйте @staticmethod для независимых функций, а @classmethod, когда нужно работать с самим классом.

Что выведет код?
Anonymous voting

photo content

Что делает метод new в Python и когда его использовать? Метод new отвечает за создание нового экземпляра класса перед его инициализацией в init. Он используется в случаях, когда нужно контролировать процесс создания объекта, например, в синглтонах или при наследовании от неизменяемых типов (int, str, tuple). ✅ Пример использования:
class Singleton:
    _instance = None

    def new(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super().new(cls)
        return cls._instance

obj1 = Singleton()
obj2 = Singleton()

print(obj1 is obj2)  # True (оба объекта — одна и та же ссылка)
В отличие от init, new контролирует сам процесс создания объекта. Полезен для ограничения числа экземпляров и работы с неизменяемыми классами.

Автоматизация тестирования desktop приложений с помощью Dogtail В статье рассмотрим, как Dogtail заменил Appium для тестирова
Автоматизация тестирования desktop приложений с помощью Dogtail В статье рассмотрим, как Dogtail заменил Appium для тестирования отечественных Linux-приложений. Разберём его работу с GTK и Qt, взаимодействие через ATK и DBus, а также опыт использования.

🔄 Как работает itertools.chain в Python? itertools.chain позволяет объединять несколько итерируемых объектов в один, не создавая новых списков. Это экономит память и делает код чище. ✅ Пример:
from itertools import chain

list1 = [1, 2, 3]
list2 = [4, 5, 6]

for num in chain(list1, list2):
    print(num)  # 1 2 3 4 5 6
Обычно для объединения списков используют +, но это создаёт новый список в памяти. chain позволяет перебирать элементы последовательно, без лишних затрат, что особенно полезно при работе с большими наборами данных или генераторами.