Методы: classm (ч.2)
Объект метода сравнивается равным, когда обе функции равны, а связанные объекты одинаковы. Так o1.method == o1.method это правдиво, хотя и не тот же объект в памяти.
staticmethod преобразует функции в дескриптор "no-op", который возвращает функцию как есть. Объекты метода никогда не создаются, поэтому сравнение с is является правдивым.
Разъяснивший Python
Объект метода сравнивается равным, когда обе функции равны, а связанные объекты одинаковы. Так o1.method == o1.method это правдиво, хотя и не тот же объект в памяти.
staticmethod преобразует функции в дескриптор "no-op", который возвращает функцию как есть. Объекты метода никогда не создаются, поэтому сравнение с is является правдивым.
Разъяснивший Python
Методы: staticm
Необходимость создавать новые объекты "метода" каждый раз, когда Python вызывает методы экземпляра, и необходимость каждый раз изменять аргументы для вставки self сильно повлияла на производительность. CPython 3.7 решил это, введя новые коды операций, которые имеют дело с вызывающими методами без создания объектов временных методов. Это используется только тогда, когда фактически вызывается доступная функция, поэтому фрагменты здесь не затрагиваются и по-прежнему генерируют методы :)
Разъяснивший Python
Необходимость создавать новые объекты "метода" каждый раз, когда Python вызывает методы экземпляра, и необходимость каждый раз изменять аргументы для вставки self сильно повлияла на производительность. CPython 3.7 решил это, введя новые коды операций, которые имеют дело с вызывающими методами без создания объектов временных методов. Это используется только тогда, когда фактически вызывается доступная функция, поэтому фрагменты здесь не затрагиваются и по-прежнему генерируют методы :)
Разъяснивший Python
❤1
Абсолютная правда
Реализация all функции эквивалентна.
all([]) возвращает True, поскольку итерируемый элемент пуст.
all([[]]) возвращает, False потому что переданный массив содержит один элемент, [] а в python пустой список является ложным.
all([[[]]]) и более высокие рекурсивные варианты всегда есть True. Это потому, что единственный элемент переданного массива ([[...]]) больше не является пустым, а списки со значениями соответствуют действительности.
Разъяснивший Python
Реализация all функции эквивалентна.
all([]) возвращает True, поскольку итерируемый элемент пуст.
all([[]]) возвращает, False потому что переданный массив содержит один элемент, [] а в python пустой список является ложным.
all([[[]]]) и более высокие рекурсивные варианты всегда есть True. Это потому, что единственный элемент переданного массива ([[...]]) больше не является пустым, а списки со значениями соответствуют действительности.
Разъяснивший Python
Удивительная запятая
Запятая в конце не всегда допустима в списке формальных параметров функции Python.
В Python список аргументов определяется частично с помощью начальных и частично завершающих запятых. Этот конфликт приводит к ситуациям, когда запятая оказывается запертой посередине, и ни одно правило ее не принимает.
Примечание: Проблема с запятыми в конце исправлена в Python 3.6. Замечания в этом посте кратко обсуждают различные варианты использования запятых в конце в Python.
Разъяснивший Python
Запятая в конце не всегда допустима в списке формальных параметров функции Python.
В Python список аргументов определяется частично с помощью начальных и частично завершающих запятых. Этот конфликт приводит к ситуациям, когда запятая оказывается запертой посередине, и ни одно правило ее не принимает.
Примечание: Проблема с запятыми в конце исправлена в Python 3.6. Замечания в этом посте кратко обсуждают различные варианты использования запятых в конце в Python.
Разъяснивший Python
Строки и обратная косая черта (ч.1)
В обычной строке python обратная косая черта используется для экранирования символов, которые могут иметь особое значение (например, одинарная кавычка, двойная кавычка и сама обратная косая черта).
Разъяснивший Python
В обычной строке python обратная косая черта используется для экранирования символов, которые могут иметь особое значение (например, одинарная кавычка, двойная кавычка и сама обратная косая черта).
Разъяснивший Python
Строки и обратная косая черта (ч.2)
В необработанном строковом литерале (на что указывает префикс r) обратная косая черта передается как есть вместе с поведением экранирования следующего символа.
Это означает, что когда анализатор обнаруживает обратную косую черту в необработанной строке, он ожидает, что за ней последует другой символ. И в нашем случае (print(r"\")) обратная косая черта экранировала завершающую кавычку, оставляя анализатор без завершающей кавычки (отсюда SyntaxError). Вот почему обратная косая черта не работает в конце необработанной строки.
Разъяснивший Python
В необработанном строковом литерале (на что указывает префикс r) обратная косая черта передается как есть вместе с поведением экранирования следующего символа.
Это означает, что когда анализатор обнаруживает обратную косую черту в необработанной строке, он ожидает, что за ней последует другой символ. И в нашем случае (print(r"\")) обратная косая черта экранировала завершающую кавычку, оставляя анализатор без завершающей кавычки (отсюда SyntaxError). Вот почему обратная косая черта не работает в конце необработанной строки.
Разъяснивший Python
Не узел!
Приоритет оператора влияет на то, как вычисляется выражение, и == operator имеет более высокий приоритет, чем not operator в Python.
Таким образом, not x == y эквивалентноnot (x == y), что эквивалентно not (True == False) окончательной оценке True.
Но x == not y вызывает SyntaxError вопрос, потому что его можно считать эквивалентным, (x == not) y а не x == (not y) тем, что вы могли ожидать на первый взгляд.
Анализатор ожидал, что not токен будет частью not in оператора (потому что оба оператора == и not in имеют одинаковый приоритет), но после того, как не смог найти in токен, следующий за not токеном, он выдает SyntaxError.
Разъяснивший Python
Приоритет оператора влияет на то, как вычисляется выражение, и == operator имеет более высокий приоритет, чем not operator в Python.
Таким образом, not x == y эквивалентноnot (x == y), что эквивалентно not (True == False) окончательной оценке True.
Но x == not y вызывает SyntaxError вопрос, потому что его можно считать эквивалентным, (x == not) y а не x == (not y) тем, что вы могли ожидать на первый взгляд.
Анализатор ожидал, что not токен будет частью not in оператора (потому что оба оператора == и not in имеют одинаковый приоритет), но после того, как не смог найти in токен, следующий за not токеном, он выдает SyntaxError.
Разъяснивший Python
Половина строк в тройных кавычках
Python поддерживает неявную конкатенацию строковых литералов.
''' и """ также являются разделителями строк в Python, которые вызывают ошибку SyntaxError, потому что интерпретатор Python ожидал, что в качестве разделителя будет заключена тройная кавычка при сканировании текущего строкового литерала в тройных кавычках.
Разъяснивший Python
Python поддерживает неявную конкатенацию строковых литералов.
''' и """ также являются разделителями строк в Python, которые вызывают ошибку SyntaxError, потому что интерпретатор Python ожидал, что в качестве разделителя будет заключена тройная кавычка при сканировании текущего строкового литерала в тройных кавычках.
Разъяснивший Python
Что не так с логическими значениями? (ч.1)
Изначально в Python не было bool типа (люди использовали 0 для false и ненулевое значение, такое как 1 для true). True, False и bool тип был добавлен в версиях 2.x, но для обратной совместимости True и False нельзя было сделать константами. Они просто были встроенными переменными, и их можно было переназначить.
Разъяснивший Python
Изначально в Python не было bool типа (люди использовали 0 для false и ненулевое значение, такое как 1 для true). True, False и bool тип был добавлен в версиях 2.x, но для обратной совместимости True и False нельзя было сделать константами. Они просто были встроенными переменными, и их можно было переназначить.
Разъяснивший Python
Что не так с логическими значениями? (ч.2)
bool является подклассом int в Python. И, таким образом, True и False являются экземплярами int. Целочисленное значение True равно 1, а значение из False равно 0.
Разъяснивший Python
bool является подклассом int в Python. И, таким образом, True и False являются экземплярами int. Целочисленное значение True равно 1, а значение из False равно 0.
Разъяснивший Python
Что не так с логическими значениями? (ч.3)
Python 3 был обратно несовместим, проблема была наконец исправлена, и, таким образом, последний фрагмент не будет работать с Python 3.x!
Разъяснивший Python
Python 3 был обратно несовместим, проблема была наконец исправлена, и, таким образом, последний фрагмент не будет работать с Python 3.x!
Разъяснивший Python
Полезные практики разработки
Делимся текстовым гайдом, в котором автор делится полезными практиками разработки. После прочтения очень сильно упростится поддержка твоих проектов в настоящем и будущем.
Читать...
Разъяснивший Python
Делимся текстовым гайдом, в котором автор делится полезными практиками разработки. После прочтения очень сильно упростится поддержка твоих проектов в настоящем и будущем.
Читать...
Разъяснивший Python
Хабр
Практики разработки на Python
Привет, Хабр! Меня зовут Роман Гвоздев, я программист в команде «Гравитон» и моя задача в компании — разработка API/CLI интерфейсов и приложений на языке Python. Цель данной статьи в том, чтобы...
Ретроспективы проверки
С помощью ретроспективных проверок можно узнать, что перед текущей позицией в строке находится определенный шаблон, не захватывая его в результат. В данном видео автор подробно рассказывает, как правильно пользоваться этой проверкой.
Смотреть...
Разъяснивший Python
С помощью ретроспективных проверок можно узнать, что перед текущей позицией в строке находится определенный шаблон, не захватывая его в результат. В данном видео автор подробно рассказывает, как правильно пользоваться этой проверкой.
Смотреть...
Разъяснивший Python
YouTube
#56. Ретроспективные (lookbehind) проверки | The Python Standard Library
https://t.me/python_selfedu
The Python Standard Library: https://docs.python.org/3/library/index.html
The Python Standard Library: https://docs.python.org/3/library/index.html
Опережающие проверки
Опережающая проверка – это специальная конструкция в regex. Она проверяет контекст вокруг совпадения без захвата этого текста в результат. В данном видеоматериале автор рассказывает, как пользоваться опережающими проверками.
Смотреть...
Разъяснивший Python
Опережающая проверка – это специальная конструкция в regex. Она проверяет контекст вокруг совпадения без захвата этого текста в результат. В данном видеоматериале автор рассказывает, как пользоваться опережающими проверками.
Смотреть...
Разъяснивший Python
YouTube
#55. Опережающие (lookahead) проверки. Флаги | The Python Standard Library
https://t.me/python_selfedu
The Python Standard Library: https://docs.python.org/3/library/index.html
The Python Standard Library: https://docs.python.org/3/library/index.html
Как работает линейная регрессия?
С помощью линейной регрессии ты можешь найти зависимость между переменными и предсказать значение одной величины на основе других. Благодаря текстовому гайду ты узнаешь, как работает линейная регрессия.
Читать...
Разъяснивший Python
С помощью линейной регрессии ты можешь найти зависимость между переменными и предсказать значение одной величины на основе других. Благодаря текстовому гайду ты узнаешь, как работает линейная регрессия.
Читать...
Разъяснивший Python
Хабр
Как бы я рассказал про линейную регрессию (если б меня кто-то спросил)
Дорожная карта текущей статьи со всеми побочными (необязательными) ответвлениями. Цвет дорог соотносится с окантовкой графиков соответствующих разделов, то есть ниже по тексту все графики относящиеся...
Сравнение PyTorch и TensorFlow
К 2026 году фреймворки PyTorch и TensorFlow заимствуют лучшие фичи друг у друга, а по частоте использования они находятся примерно на одной отметке. Благодаря данной статье ты узнаешь, какой из этих фреймворков лучше.
Читать...
Разъяснивший Python
К 2026 году фреймворки PyTorch и TensorFlow заимствуют лучшие фичи друг у друга, а по частоте использования они находятся примерно на одной отметке. Благодаря данной статье ты узнаешь, какой из этих фреймворков лучше.
Читать...
Разъяснивший Python
Хабр
PyTorch vs TensorFlow: что выбрать для deep learning в 2026 году
Выбор фреймворка для глубокого обучения — это стратегическое решение, влияющее на скорость разработки, стоимость и масштабируемость. Правило «PyTorch — для исследований, TensorFlow — для продакшена»...
Подборка полезных Git-хуков
Git-хуки запускают проверки прямо во время git commit или git push. Это позволяет блокировать коммит, если были обнаружены нарушения. В данной статье автор делится полезными скриптами, которые не позволят тебе закоммитить плохой код.
Читать...
Разъяснивший Python
Git-хуки запускают проверки прямо во время git commit или git push. Это позволяет блокировать коммит, если были обнаружены нарушения. В данной статье автор делится полезными скриптами, которые не позволят тебе закоммитить плохой код.
Читать...
Разъяснивший Python
Хабр
Git-хуки, которые не дают коммитить плохой код
Здравствуйте, коллеги программисты! Большинство фейлов в CI — это мелочи: забытый console.log , форматирование, линт, сломанный импорт, файл без теста. Такие ошибки не должны доезжать до сборки или...
Пишем Python код на русском языке
В этой статье автор рассматривает обертку для языка программирования Python, которая позволяет писать код на русском языке. Обертка принимает на вход строку с русским текстом и возвращает строку с кодом на Python, который соответствует этому тексту.
Читать...
Разъяснивший Python
В этой статье автор рассматривает обертку для языка программирования Python, которая позволяет писать код на русском языке. Обертка принимает на вход строку с русским текстом и возвращает строку с кодом на Python, который соответствует этому тексту.
Читать...
Разъяснивший Python
Дополнительные функции модуля os.path
Продолжаем делиться циклом видеоматериалов, где автор знакомит с модулем os.path. В прошлый раз были разобраны основные функции, в этот раз акцент сделан на менее популярных функциях.
Смотреть...
Разъяснивший Python
Продолжаем делиться циклом видеоматериалов, где автор знакомит с модулем os.path. В прошлый раз были разобраны основные функции, в этот раз акцент сделан на менее популярных функциях.
Смотреть...
Разъяснивший Python
YouTube
#60. Дополнительные функции модуля os.path | The Python Standard Library
https://t.me/python_selfedu
The Python Standard Library: https://docs.python.org/3/library/index.html
The Python Standard Library: https://docs.python.org/3/library/index.html
Изменение неизменяемого! (ч.2)
+= оператор изменяет список на месте. Назначение элемента не работает, но когда возникает исключение, элемент уже был изменен на месте.
Также есть объяснение в официальном FAQ по Python.
Разъяснивший Python
+= оператор изменяет список на месте. Назначение элемента не работает, но когда возникает исключение, элемент уже был изменен на месте.
Также есть объяснение в официальном FAQ по Python.
Разъяснивший Python