Рекурсия — это техника, при которой функция вызывает саму себя. Функция факториала — классический пример использования рекурсии. Давайте разберём, как это работает.
•
Если n == 0
, функция возвращает 1 (базовый случай).•
В остальных случаях функция вызывает саму себя с аргументом n - 1
.•
Результаты этих вызовов умножаются на текущее значение n
.Развернутый аналог:
def factorial_iterative(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤🔥3
Метод
tempfile.NamedTemporaryFile()
из модуля tempfile
создаёт временный файл, который автоматически удаляется при закрытии. Это удобно для временного хранения данных.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤🔥1
Класс
abc.ABCMeta
из модуля abc
используется для создания абстрактных базовых классов (Abstract Base Classes). Это позволяет определить методы, которые должны быть реализованы в подклассах, и предотвращает создание экземпляров базового класса.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤🔥3🏆2🆒2
Любимые подписчики, поздравляю вас с наступающим новым годом! Пусть в 2025 году исполнятся все ваши самые заветные желания🎄 🎄 🎄 🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄68🍾12🔥8👍5❤🔥1
Вложенные циклы при обработке больших объёмов данных значительно снижают производительность, особенно если внутри вложенного цикла выполняются сложные операции. Это приводит к избыточному времени выполнения программы.
zip
, enumerate
или библиотеку numpy
, чтобы сократить количество циклов.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤🔥2
Использование обычных циклов для фильтрации данных в списках или других коллекциях может быть неэффективным и затрудняет читаемость кода. Это особенно актуально, когда в Python уже есть встроенные средства для таких задач.
filter()
или list comprehension
, чтобы сделать код более читаемым и производительным.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤🔥2
Пояснение
Аргумент message имеет значение по умолчанию "Hello". При вызове greet("Alice") используется значение по умолчанию, результат: Hello, Alice!. Во втором вызове передаётся ключевой аргумент message="Hi", поэтому результат: Hi, Bob!. Код выполняется корректно.
Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3
Ответ:
Anonymous Quiz
8%
Hello, Alice!, Hello, Bob!
5%
Hi, Alice!, Hello, Bob!
83%
Hello, Alice!, Hi, Bob!
5%
Ошибка выполнения
👍14🤔5🍾3
Метод
sys.getrefcount()
позволяет получить количество ссылок на объект. Это полезно для анализа работы сборщика мусора и управления памятью в Python.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🎄3
Пояснение
Метод @property превращает radius в геттер, а метод @radius .setter добавляет проверку значения. Сначала radius возвращает 5, затем успешно устанавливается в 10. Код выполняется корректно.
Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤🔥1
👍8🍾5❤🔥2
Метод
asyncio.gather()
из модуля asyncio
позволяет запускать несколько асинхронных задач одновременно и ожидать их завершения. Это удобный инструмент для работы с конкурентным выполнением задач.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥3❤🔥1
Метод
inspect.getclosurevars()
из модуля inspect
позволяет извлечь значения замыканий из функции. Это полезно для анализа внутреннего состояния функций с замыканиями.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤🔥2
Что такое метаклассы в Python, как они работают, и зачем их использовать?
Ответ
Метаклассы задаются через ключевое слово metaclass в определении класса. Например, можно создать метакласс, чтобы автоматически добавлять новые методы или атрибуты.
Пример использования
# Создаем метакласс
class MyMeta(type):
def __new__(cls, name, bases, dct):
dct['greet'] = lambda self: f"Hello from {name}!"
return super().__new__(cls, name, bases, dct)
# Используем метакласс
class MyClass(metaclass=MyMeta):
pass
obj = MyClass()
print(obj.greet()) # Вывод: Hello from MyClass!
Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤🔥2
Как работает
__getattr__
и __getattribute__
в Python, и в чём между ними разница?Ответ
__getattribute__ вызывается для любого обращения к атрибуту объекта.
__getattr__ вызывается только в случае, если атрибут не найден стандартным способом.
Разница: __getattribute__ перехватывает все обращения, а __getattr__ только пропущенные. Это делает __getattr__ безопаснее для использования, так как он не нарушает стандартный процесс получения атрибутов.
Пример использования
class MyClass:
def __getattr__(self, name):
return f"Атрибут {name} отсутствует!"
def __getattribute__(self, name):
if name == "special":
return "Это особый атрибут"
return super().__getattribute__(name)
obj = MyClass()
print(obj.special) # Это особый атрибут
print(obj.undefined) # Атрибут undefined отсутствует!
Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
weakref.WeakValueDictionary
из модуля weakref
создаёт словарь, где значения являются слабой ссылкой на объекты. Это полезно для кэширования данных, которые должны автоматически удаляться, когда больше нет других ссылок на объект.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍11❤🔥4
Друзья, на связи ваш админ.
Я тут сделал бота для знакомств @tinder. Буду рад, если вы оцените и воспользуетесь. Если буду какие-то замечания, пишите, буду благодарен)
Я тут сделал бота для знакомств @tinder. Буду рад, если вы оцените и воспользуетесь. Если буду какие-то замечания, пишите, буду благодарен)
😁16🗿6❤🔥1
Что такое метаклассы в Python, как они работают, и зачем их использовать?
Ответ
Метаклассы задаются через ключевое слово metaclass в определении класса. Например, можно создать метакласс, чтобы автоматически добавлять новые методы или атрибуты.
Пример использования
# Создаем метакласс
class MyMeta(type):
def __new__(cls, name, bases, dct):
dct['greet'] = lambda self: f"Hello from {name}!"
return super().__new__(cls, name, bases, dct)
# Используем метакласс
class MyClass(metaclass=MyMeta):
pass
obj = MyClass()
print(obj.greet()) # Вывод: Hello from MyClass!
Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤🔥5⚡1
Метод
traceback.format_exc()
из модуля traceback
используется для получения форматированной строки трассировки исключения. Это полезно для логирования ошибок или их анализа.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤🔥4🎉1
Метод
os.getpid()
возвращает идентификатор текущего процесса. Это полезно для отладки и мониторинга выполнения программ.Python Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤🔥3🏆2