Проверка на оригинальность
Один из важнейших факторов работы с текстовым контентом — плагиат. Не всегда возможно проверить каждый файл вручную, особенно, если у вас целый пакет файлов. Тут пригодится инструмент для выявления плагиата. Мы можем создать собственный детектор при помощи библиотеки difflib. Ее можно использовать для поиска сходства между двумя или несколькими файлами на одном устройстве.
#theory // Just Python
Один из важнейших факторов работы с текстовым контентом — плагиат. Не всегда возможно проверить каждый файл вручную, особенно, если у вас целый пакет файлов. Тут пригодится инструмент для выявления плагиата. Мы можем создать собственный детектор при помощи библиотеки difflib. Ее можно использовать для поиска сходства между двумя или несколькими файлами на одном устройстве.
#theory // Just Python
Локальный переводчик
Мы живем в многоязычном мире. А поскольку каждый человек может выучить не так уж много языков, то, чтобы понимать друг друга, нам нужны переводчики. Переводчиком может быть и программа. Для создания таких программ в Python есть специальная библиотека — Translator.
#theory // Just Python
Мы живем в многоязычном мире. А поскольку каждый человек может выучить не так уж много языков, то, чтобы понимать друг друга, нам нужны переводчики. Переводчиком может быть и программа. Для создания таких программ в Python есть специальная библиотека — Translator.
#theory // Just Python
Локальный переводчик
Мы живем в многоязычном мире. А поскольку каждый человек может выучить не так уж много языков, то, чтобы понимать друг друга, нам нужны переводчики. Переводчиком может быть и программа. Для создания таких программ в Python есть специальная библиотека — Translator.
#theory // Just Python
Мы живем в многоязычном мире. А поскольку каждый человек может выучить не так уж много языков, то, чтобы понимать друг друга, нам нужны переводчики. Переводчиком может быть и программа. Для создания таких программ в Python есть специальная библиотека — Translator.
#theory // Just Python
Метод remove() для удаления элемента из списка
В этом списке есть строки и целые числа. Есть повторяющиеся элементы: строка «Mars» и число 12.
#theory // Just Python
В этом списке есть строки и целые числа. Есть повторяющиеся элементы: строка «Mars» и число 12.
#theory // Just Python
Второстепенные (ч.1)
Учитывая, что a это число, ++a и --a оба являются допустимыми операторами Python, но ведут себя по-другому по сравнению с аналогичными операторами в таких языках, как C, C ++ или Java.
В грамматике Python нет ++ оператора. На самом деле это два + оператора.
++a разбирается как, +(+a) что переводится как a. Аналогично, вывод инструкции --a может быть оправдан.
В этом потоке StackOverflow обсуждается обоснование отсутствия операторов увеличения и уменьшения в Python.
#theory // Just Python
Учитывая, что a это число, ++a и --a оба являются допустимыми операторами Python, но ведут себя по-другому по сравнению с аналогичными операторами в таких языках, как C, C ++ или Java.
В грамматике Python нет ++ оператора. На самом деле это два + оператора.
++a разбирается как, +(+a) что переводится как a. Аналогично, вывод инструкции --a может быть оправдан.
В этом потоке StackOverflow обсуждается обоснование отсутствия операторов увеличения и уменьшения в Python.
#theory // Just Python
Второстепенные (ч.2)
Вы, должно быть, знаете о операторе Walrus в Python. Но слышали ли вы когда-нибудь о операторе space-invader?
Он используется в качестве альтернативного оператора увеличения вместе с другим
Эта шутка взята из твита Рэймонда Хеттингера. Оператор space invader на самом деле просто неправильно отформатирован a -= (-1). Что эквивалентно a = a - (- 1). Аналогично для a += (+ 1) случая.
#theory // Just Python
Вы, должно быть, знаете о операторе Walrus в Python. Но слышали ли вы когда-нибудь о операторе space-invader?
Он используется в качестве альтернативного оператора увеличения вместе с другим
Эта шутка взята из твита Рэймонда Хеттингера. Оператор space invader на самом деле просто неправильно отформатирован a -= (-1). Что эквивалентно a = a - (- 1). Аналогично для a += (+ 1) случая.
#theory // Just Python
Оператор обратной импликации.
В Python есть недокументированный оператор обратной импликации.
Если вы замените False и True на 0 и 1 и выполните математические вычисления, таблица истинности эквивалентна оператору обратной импликации.
#theory // Just Python
В Python есть недокументированный оператор обратной импликации.
Если вы замените False и True на 0 и 1 и выполните математические вычисления, таблица истинности эквивалентна оператору обратной импликации.
#theory // Just Python
Оператор @
Поскольку мы говорим об операторах, есть также @ оператор для умножения матриц (не волнуйтесь, на этот раз все по-настоящему).
Оператор @ был добавлен в Python 3.5 с учетом интересов научного сообщества. Любой объект может перегрузить matmul магический метод, чтобы определить поведение для этого оператора.
#theory // Just Python
Поскольку мы говорим об операторах, есть также @ оператор для умножения матриц (не волнуйтесь, на этот раз все по-настоящему).
Оператор @ был добавлен в Python 3.5 с учетом интересов научного сообщества. Любой объект может перегрузить matmul магический метод, чтобы определить поведение для этого оператора.
#theory // Just Python
Сколько может хранить переменных функция?
Python использует 2 байта для хранения локальных переменных в функциях. Теоретически это означает, что в функции может быть определено только 65536 переменных. Однако в python встроено удобное решение, которое можно использовать для хранения более 2 ^ 16 имен переменных. Следующий код демонстрирует, что происходит в стеке, когда определено более 65536 локальных переменных (Внимание: этот код печатает около 2 ^ 18 строк текста, так что будьте готовы!)
#theory // Just Python
Python использует 2 байта для хранения локальных переменных в функциях. Теоретически это означает, что в функции может быть определено только 65536 переменных. Однако в python встроено удобное решение, которое можно использовать для хранения более 2 ^ 16 имен переменных. Следующий код демонстрирует, что происходит в стеке, когда определено более 65536 локальных переменных (Внимание: этот код печатает около 2 ^ 18 строк текста, так что будьте готовы!)
#theory // Just Python
f-string
Начиная с Python 3.8, вы можете использовать типичный синтаксис f-string, например f'{some_var=}, для быстрой отладки
#theory // Just Python
Начиная с Python 3.8, вы можете использовать типичный синтаксис f-string, например f'{some_var=}, для быстрой отладки
#theory // Just Python
Сколько может хранить переменных функция?
Python использует 2 байта для хранения локальных переменных в функциях. Теоретически это означает, что в функции может быть определено только 65536 переменных. Однако в python встроено удобное решение, которое можно использовать для хранения более 2 ^ 16 имен переменных. Следующий код демонстрирует, что происходит в стеке, когда определено более 65536 локальных переменных (Внимание: этот код печатает около 2 ^ 18 строк текста, так что будьте готовы!)
#theory // Just Python
Python использует 2 байта для хранения локальных переменных в функциях. Теоретически это означает, что в функции может быть определено только 65536 переменных. Однако в python встроено удобное решение, которое можно использовать для хранения более 2 ^ 16 имен переменных. Следующий код демонстрирует, что происходит в стеке, когда определено более 65536 локальных переменных (Внимание: этот код печатает около 2 ^ 18 строк текста, так что будьте готовы!)
#theory // Just Python
Print
Иногда print метод может выводить значения не сразу.
Это выведет wtfpython через 3 секунды из-за end аргумента, потому что выходной буфер очищается либо после обнаружения, \n либо когда программа завершает выполнение. Мы можем принудительно очистить буфер, передав flush=True аргумент.
#theory // Just Python
Иногда print метод может выводить значения не сразу.
Это выведет wtfpython через 3 секунды из-за end аргумента, потому что выходной буфер очищается либо после обнаружения, \n либо когда программа завершает выполнение. Мы можем принудительно очистить буфер, передав flush=True аргумент.
#theory // Just Python
Count
'abc'.count('') == 4. Вот приблизительная реализация count метода, которая сделала бы вещи более понятными.
Такое поведение обусловлено сопоставлением пустой подстроки ('') с фрагментами длины 0 в исходной строке.
#theory // Just Python
'abc'.count('') == 4. Вот приблизительная реализация count метода, которая сделала бы вещи более понятными.
Такое поведение обусловлено сопоставлением пустой подстроки ('') с фрагментами длины 0 в исходной строке.
#theory // Just Python
generator expressions
Попробуем использовать генераторные выражения (для получения среза будем использовать функцию islice из itertools, которая возвращает итератор по срезу)
#theory // Just Python
Попробуем использовать генераторные выражения (для получения среза будем использовать функцию islice из itertools, которая возвращает итератор по срезу)
#theory // Just Python
generator functions
Если предикатов фильтрации или обработчиков элементов списка много, то удобнее использовать генераторы. Они могут не дать прироста скорости, но помогут сэкономить память.
Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield
#theory // Just Python
Если предикатов фильтрации или обработчиков элементов списка много, то удобнее использовать генераторы. Они могут не дать прироста скорости, но помогут сэкономить память.
Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield
#theory // Just Python
Оператор walrus (:=)
В этом примере мы используем оператор walrus (:=) для одновременного присваивания значения переменной line и проверки условия внутри цикла while. Это позволяет нам сократить код, объединив операции присваивания и проверки в одну строку.
#theory // Just Python
В этом примере мы используем оператор walrus (:=) для одновременного присваивания значения переменной line и проверки условия внутри цикла while. Это позволяет нам сократить код, объединив операции присваивания и проверки в одну строку.
#theory // Just Python
Функция partial
В этом примере мы используем функцию partial для создания новых функций double и triple на основе функции multiply, фиксируя аргумент y на значениях 2 и 3 соответственно. Теперь новые функции могут быть вызваны с одним аргументом, в то время как фиксированный аргумент уже задан.
#theory // Just Python
В этом примере мы используем функцию partial для создания новых функций double и triple на основе функции multiply, фиксируя аргумент y на значениях 2 и 3 соответственно. Теперь новые функции могут быть вызваны с одним аргументом, в то время как фиксированный аргумент уже задан.
#theory // Just Python
Модуль asyncio
В этом примере мы используем модуль asyncio для создания асинхронной программы. Определяем асинхронную корутину my_coroutine, которая выполняет асинхронную операцию (в данном случае, ожидание 1 секунды). Затем определяем асинхронную функцию main, которая вызывает две корутины одновременно с помощью asyncio.gather. В конце мы используем asyncio.run для запуска основной функции main.
#theory // Just Python
В этом примере мы используем модуль asyncio для создания асинхронной программы. Определяем асинхронную корутину my_coroutine, которая выполняет асинхронную операцию (в данном случае, ожидание 1 секунды). Затем определяем асинхронную функцию main, которая вызывает две корутины одновременно с помощью asyncio.gather. В конце мы используем asyncio.run для запуска основной функции main.
#theory // Just Python
Контекстные менеджеры (with)
В этом примере мы используем контекстный менеджер with для автоматического открытия и закрытия файла. В блоке with мы читаем содержимое файла и выводим его на экран. После выхода из блока with файл будет автоматически закрыт, независимо от того, произошло исключение или нет.
#theory // Just Python
В этом примере мы используем контекстный менеджер with для автоматического открытия и закрытия файла. В блоке with мы читаем содержимое файла и выводим его на экран. После выхода из блока with файл будет автоматически закрыт, независимо от того, произошло исключение или нет.
#theory // Just Python
Декоратор @property
В этом примере мы определяем класс Circle с атрибутом radius и методом area, который вычисляет площадь окружности. Мы добавляем декоратор @property перед методом area, чтобы можно было обращаться к нему как к свойству объекта circle, без явного вызова метода.
#theory // Just Python
В этом примере мы определяем класс Circle с атрибутом radius и методом area, который вычисляет площадь окружности. Мы добавляем декоратор @property перед методом area, чтобы можно было обращаться к нему как к свойству объекта circle, без явного вызова метода.
#theory // Just Python