namedtuplenamedtuple
— это класс из модуля collections
в Python, который позволяет создавать именованные кортежи. Именованные кортежи подобны обычным кортежам, но в них элементы доступны по именам, а не только по индексам. Это делает код более читаемым и понятным, особенно когда кортеж содержит много элементов.
Чтобы использовать namedtuple
, вы должны импортировать его из модуля collections
и определить свой собственный класс именованного кортежа, указав имена полей.
#для_начинающих
Джунам - питонистам платят мало 🙁 , как быть?
Очевидно - качать скилы и перестать быть джуном 🙂
Получить +50% к зп можно уже через несколько месяцев, если учить Python ежедневно
Читай @python_practics, там есть:
✅ полезные сниппеты кода для твоих задач
✅ теория Python понятным языком с примерами
✅ вопросы из собеседований
✅ бесплатные книги и курсы по Python
✅ тесты и опросы для тех, кто не запоминает сухую инфу
Что такое синхронный код?
Синхронный код — это код, который выполняется последовательно, один за другим, и блокирует выполнение других задач до его завершения. Это означает, что если у вас есть функция, которая занимает много времени на выполнение, и вы вызываете ее в основной программе, то выполнение программы заблокируется до завершения этой функции.
Выполнение синхронного кода может занять много времени и может вызвать проблемы с производительностью, особенно когда код выполняет блокирующие операции, такие как чтение и запись файлов, обращение к сети, или поиск значений в базе данных.
#для_начинающих
Почему пустой список нельзя использовать как аргумент по умолчанию?
Значения по умолчанию для аргументов функции вычисляются только один раз, когда функция определяется, а не каждый раз, когда она вызывается. Таким образом, если вы попытаетесь использовать изменяемый тип данных (например, список) как аргумент по умолчанию для функции, то каждый вызов функции, который изменяет это значение, также изменит значение по умолчанию для всех последующих вызовов функции. Это может привести к неожиданным поведениям.
Пустой список — это изменяемый тип данных в Python, поэтому его использование в качестве аргумента по умолчанию не рекомендуется. Вместо этого лучше использовать None в качестве значения по умолчанию и создавать новый пустой список внутри функции, если требуется список.
#для_начинающих
Асинхронный код
Асинхронный код — это подход к написанию кода, который позволяет выполнять несколько задач одновременно в рамках одного процесса. Это достигается за счет использования асинхронных функций и корутин. В отличие от синхронного кода, который выполняет каждую задачу последовательно, асинхронный код может запустить несколько задач «параллельно» и организовать их выполнение с помощью итераций и вызовов коллбеков.
#для_продвинутых
Чем отличаются iter и next?iter
и next
являются методами специальных методов в Python, которые обеспечивают поддержку итерации для объектов.
Метод iter
возвращает объект, который может быть использован для итерации по элементам контейнера. Объект, возвращаемый iter
, должен содержать метод next
.
Метод next должен вернуть следующий элемент в итерации или вызвать исключение StopIteration
, если элементов больше нет.
Таким образом, метод iter
используется для создания итератора, а метод next используется для перехода к следующему элементу в итерации.
#для_начинающих
Как сделать копию и глубокую копию объекта?
Метод copy()
создает поверхностную копию объекта, то есть создает новый объект, который содержит ссылки на те же объекты, что и исходный объект. Если вы измените какой-либо из этих объектов, изменения отразятся и на копии, и на исходном объекте.
Метод deepcopy()
создает глубокую копию объекта, то есть создает новый объект, который содержит копии всех объектов, на которые ссылаются элементы исходного объекта. Если вы измените какой-либо из этих объектов, изменения не отразятся на копии или на исходном объекте.
#для_начинающих
__next__ __next__
— это метод, который используется в Python для реализации протокола итератора в пользовательских классах. Протокол итератора позволяет объекту перебирать элементы один за другим. Этот метод должен быть определен в классе, чтобы он мог быть итерируемым с помощью цикла for
.
#для_начинающих
Хвостовая рекурсия
Хвостовая рекурсия — это вид рекурсии, при котором рекурсивный вызов функции происходит в конце функции и результат этого вызова сразу возвращается, без выполнения каких-либо дополнительных операций. Хвостовая рекурсия может быть оптимизирована интерпретатором Python, чтобы избежать переполнения стека и улучшить производительность.
Для создания хвостовой рекурсии в Python, вы можете использовать декоратор @functools.lru_cache
в сочетании с аргументами, которые передаются функции.
#для_продвинутых
Что такое файлы .pth
Файлы с расширением .pth — это файлы, которые могут быть использованы для добавления директорий в путь поиска модулей Python. Директивы .pth выполняются при запуске интерпретатора Python и добавляют определенные каталоги в переменную sys.path.
Это удобно, когда нужно импортировать модули из нестандартных директорий без необходимости переноса файлов в директории по умолчанию.
#для_начинающих
Декоратор timeit
Декоратор timeit
используется для измерения времени выполнения функции или участка кода. Этот декоратор позволяет вам оценить, сколько времени занимает выполнение определенной операции.
Вы можете использовать этот декоратор, чтобы измерить время выполнения любой функции. Просто поместите @timeit перед определением функции, которую вы хотите измерить, и при каждом вызове этой функции будет выводиться время выполнения.
#для_начинающих
PYTHONSTARTUPPYTHONSTARTUP
— это переменная окружения, которая позволяет указать путь к файлу, который будет автоматически выполнен при запуске интерпретатора. Этот файл может содержать любой дополнительный код, который вы хотите выполнить каждый раз, когда запускается интерпретатор.
Обычно PYTHONSTARTUP
используется для настройки окружения, импорта модулей или выполнения других задач, которые нужно выполнить перед началом работы в интерактивной среде.
#для_начинающих
Цепи Маркова
Цепи Маркова (Markov Chains) представляют собой математическую модель, которая описывает последовательность состояний, в которых система может находиться, и вероятности переходов между этими состояниями. В Python вы можете реализовать Цепи Маркова с помощью списка списков или матрицы переходных вероятностей.
На картинке пример простой Цепи Маркова, описывающей погоду (солнечно, облачно, дождливо) с вероятностями переходов между этими состояниями
#для_продвинутых
Декораторы для проверки сигнатуры метода
Декораторы для проверки сигнатуры метода (method signature checking decorators) могут быть полезными для улучшения контроля над аргументами и возвращаемыми значениями методов. Они позволяют вам проверить, что метод вызывается с правильными типами аргументов и возвращает ожидаемые значения. Для создания таких декораторов можно использовать библиотеку functools
и inspect
.
#для_продвинутых
Обезьяний патч
Обезьяний патч (Monkey patch) в Python — это техника, которая позволяет изменять или расширять функциональность существующих классов, модулей или объектов во время выполнения программы. Этот термин образовался из-за аналогии с идеей того, что вы «насаживаете» (patch) код поверх существующего, подобно обучению обезьяны выполнять новые трюки.
#для_продвинутых
Удаляем фон с изображения
rembg - это полезная библиотека, которая легко удаляет фон с любой фотографии.
Установка - !pip install rembg.
Документацию можно посмотреть здесь.
Почему пустой список нельзя использовать как аргумент по умолчанию?
Значения по умолчанию для аргументов функции вычисляются только один раз, когда функция определяется, а не каждый раз, когда она вызывается. Таким образом, если вы попытаетесь использовать изменяемый тип данных (например, список) как аргумент по умолчанию для функции, то каждый вызов функции, который изменяет это значение, также изменит значение по умолчанию для всех последующих вызовов функции. Это может привести к неожиданным поведениям.
Пустой список — это изменяемый тип данных, поэтому его использование в качестве аргумента по умолчанию не рекомендуется. Вместо этого лучше использовать None
в качестве значения по умолчанию и создавать новый пустой список внутри функции, если требуется список.
#для_начинающих
Слайс
Слайс (или срез, англ. slice) — это способ выбрать часть последовательности (например, строки, списка, кортежа) путем указания начального и конечного индексов, а также шага. Слайсы используются для извлечения подстрок, подсписков или подкортежей из исходной последовательности.
Слайсы полезны для работы с большими последовательностями данных и предоставляют удобный способ извлечения нужных элементов из них.
#для_начинающих
🔍 Rust Journey: Хотите освоить язык программирования, который завоевывает мир?
🚀 Илон Маск, один из ведущих инноваторов нашего времени, утверждает, что за Rust будущее. А когда последний раз он ошибался в своих прогнозах? 😉
🪟Также недавно стало известно, что ядро Windows 11 переписывается на Rust.
✨ Не упустите свой шанс быть в авангарде IT-революции. Подписывайтесь на канал Rust Journey и начните свой путь в захватывающий мир Rust сегодня!
А вы знали, что есть нейросеть, которая кодит на Java лучше 68% айтишников?
А еще есть программа, которая анализирует требования HR’ов разных компаний и оформляет ваше резюме конкретно под них. Шанс получить оффер растет в 2-3 раза.
Нейросети – это не только ChatGPT и Миджорни, и канал «ЧбЕ» вам это докажет.
Уже сейчас есть нейронки, которые кодят лучше джунов – и если не следить за этим сейчас, то через пару лет даже топовый прогер рискует остаться в wait-листе эйчаров. А здесь о таких вещах пишут заранее.
Подпишитесь, айтишникам пригодится: ЧбЕ
Глобальные переменные
Глобальные переменные — это переменные, которые определены в глобальной области видимости, то есть они доступны из любой части программы. Глобальные переменные могут быть определены за пределами функций и классов, и они будут видны во всех частях программы, включая функции и методы.
#для_начинающих
Зачем нужен pdbpdb
— это интерактивный отладчик для Python, с помощью которого можно перемещаться по коду во время запуска вашей программы, смотреть и изменять значения переменных, построчно навигироваться по коду (в том числе углубляться во вложенности кода), назначать брейкпоинты и все прочие операции присущие отладчику.
Модуль pdb
предоставляет интерфейс командной строки, который можно использовать для взаимодействия с кодом Python во время его выполнения. Вы можете войти в режим pdb
в своей программе Python, вставив следующую строку кода там, где вы хотите остановить отладчик: импортировать PDB
.
#для_продвинутых
Что такое модуль __init__.py?
Модуль __init__.py
является частью организации пакетов (packages) в Python. Этот файл используется для определения директории как пакета и может содержать код и переменные, которые будут доступны при импорте пакета. Важно отметить, что __init__.py
не является обязательным для всех директорий, но он необходим, чтобы Python интерпретировал директорию как пакет.
#для_начинающих
Что такое wheels и eggs?
В Python wheels и eggs — это форматы пакетов для установки и дистрибуции пакетов с помощью утилиты управления пакетами pip.
Egg был первоначально разработан как формат дистрибуции пакетов для Python, но был заменен wheels. В отличие от wheels, eggs могут содержать .pyc файлы, что может привести к проблемам при установке на другой платформе или версии Python.
Wheels — это новый формат дистрибуции пакетов, который был введен в Python 2.7. Он поддерживается большинством пакетов на PyPI и имеет множество преимуществ.
#для_продвинутых
Docstring
Docstring (дословно «строка документации») — это строка, которая используется для документирования модулей, функций, классов и методов в вашем коде. Она представляет собой строковый литерал, который следует сразу после определения элемента кода и предназначен для объяснения, как работает этот элемент, какие аргументы он принимает, какие значения возвращает и другие важные детали.
Обычно docstring располагается в самом верхнем уровне определения элемента кода и заключается в тройные кавычки (одинарные или двойные).
#для_продвинутых
reduce()
Функция reduce()
в Python реализует операцию свёртки (или аккумуляции) для элементов итерируемой последовательности, используя заданную функцию. Она поочередно применяет функцию к парам элементов итерируемой последовательности и аккумулирует результаты.
Обратите внимание, что начальное значение аккумулятора можно указать в качестве третьего аргумента функции reduce()
. Если оно не указано, то в качестве начального значения используется первый элемент последовательности.
#для_начинающих
Срочно ищем Python разработчиков всех уровней!
Собираем вакансии и стажировки, которых еще нет в публичном доступе. Прямые контакты рекрутеров в Telegram.
Посмотреть можно здесь
pydoc
pydoc — это инструмент, предназначенный для генерации документации и предоставления информации о модулях, классах, функциях и методах. Этот инструмент позволяет вам получить доступ к документации и справочной информации о стандартных библиотеках и вашем собственном коде.
#для_начинающих
Срезы
Срезы (slices) в Python — это способ получения подстроки (подсписка) из последовательности, такой как строка (str), список (list) или кортеж (tuple).
#для_начинающих
PYTHONOPTIMIZEPYTHONOPTIMIZE
— это переменная среды в Python, которая используется для оптимизации выполнения кода на языке Python. Эта переменная определяет уровень оптимизации, который применяется к коду при его выполнении.
Вы можете установить значение PYTHONOPTIMIZE
в соответствующей переменной среды перед запуском интерпретатора Python, чтобы управлять уровнем оптимизации ваших программ. Это установит уровень оптимизации на 2 для выполнения my_script.py
.
#для_продвинутых