Как легко и надежно реализовать модульные тесты на Python
Что такое тесты
Тестирование кода — простой и интуитивно понятный процесс. Он заключается в создании и запуске тестов параллельно с разработкой основного кода. Это позволяет убедиться в том, что написанный код работает должным образом. Каждый так или иначе тестирует код. Одни это делают лучше, другие — хуже.
Большинство разработчиков запускают быстрые тесты в терминале или используют в качестве тестировщика сочетание assert-операторов и print-инструкций. Однако есть более эффективные способы. Поговорим о них позже, а сначала обсудим, почему так важно делать тесты.
Читать дальше
@pro_python_code
Что такое тесты
Тестирование кода — простой и интуитивно понятный процесс. Он заключается в создании и запуске тестов параллельно с разработкой основного кода. Это позволяет убедиться в том, что написанный код работает должным образом. Каждый так или иначе тестирует код. Одни это делают лучше, другие — хуже.
Большинство разработчиков запускают быстрые тесты в терминале или используют в качестве тестировщика сочетание assert-операторов и print-инструкций. Однако есть более эффективные способы. Поговорим о них позже, а сначала обсудим, почему так важно делать тесты.
Читать дальше
@pro_python_code
Capitalize Column Names in a Dataframe
https://www.pythonforbeginners.com/basics/capitalize-column-names-in-a-dataframe
@pro_python_code
https://www.pythonforbeginners.com/basics/capitalize-column-names-in-a-dataframe
@pro_python_code
🐍🧩 Обработка вложенных списков и матриц в Python: 5 задач с решениями для совершенствования навыков
https://proglib.io/p/obrabotka-vlozhennyh-spiskov-i-matric-v-python-5-zadach-s-resheniyami-dlya-sovershenstvovaniya-navykov-2022-07-04
@pro_python_code
https://proglib.io/p/obrabotka-vlozhennyh-spiskov-i-matric-v-python-5-zadach-s-resheniyami-dlya-sovershenstvovaniya-navykov-2022-07-04
@pro_python_code
Библиотека программиста
🐍🧩 Обработка вложенных списков и матриц в Python: 5 задач с решениями для совершенствования навыков
Вычисляем площадь незакрашенного холста, определяем максимальный элемент в области, заполняем массив по диагоналям, складываем две матрицы и находим нужную строку в треугольнике Паскаля.
Forwarded from Анализ данных (Data analysis)
💡10 фич для ускорения анализа данных в Python
Советы и рекомендации, особенно в программировании, могут быть очень полезны. Маленький шоткат, аддон или хак может сэкономить кучу времени и серьёзно увеличить производительность. Я собрала свои самые любимые и сделала из них эту статью. Какие-то из советов ниже уже известны многим, а какие-то появились совсем недавно. Так или иначе, я уверена, они точно не будут лишними, когда вы в очередной раз приступите к проекту по анализу данных.
Читать дальше
@data_analysis_ml
Советы и рекомендации, особенно в программировании, могут быть очень полезны. Маленький шоткат, аддон или хак может сэкономить кучу времени и серьёзно увеличить производительность. Я собрала свои самые любимые и сделала из них эту статью. Какие-то из советов ниже уже известны многим, а какие-то появились совсем недавно. Так или иначе, я уверена, они точно не будут лишними, когда вы в очередной раз приступите к проекту по анализу данных.
Читать дальше
@data_analysis_ml
Colossal-AI: унифицированная система глубокого обучения для эпохи больших моделей
https://github.com/hpcaitech/ColossalAI
@pro_python_code
https://github.com/hpcaitech/ColossalAI
@pro_python_code
This media is not supported in your browser
VIEW IN TELEGRAM
🔎 Sherlock
Алгоритм, написанный на Python проверяющий наличие учётной записи в социальных сетях по заданному никнейму пользователя
Алгоритм быстро проверяет множество сайтов, что позволяет, не теряя много времени, найти аккаунты под одноимённой регистрацией
Установка: git clone https://github.com/sherlock-project/sherlock.git
Код
Список соцсетей
@pro_python_code
Алгоритм, написанный на Python проверяющий наличие учётной записи в социальных сетях по заданному никнейму пользователя
Алгоритм быстро проверяет множество сайтов, что позволяет, не теряя много времени, найти аккаунты под одноимённой регистрацией
Установка: git clone https://github.com/sherlock-project/sherlock.git
Код
Список соцсетей
@pro_python_code
При работе в Kivy с потоками (threading) вы должны иметь в виду, что все изменения в графическом интерфейсе должны делаться из главного потока. Да, и это не смотря даже на GIL! Дело в том, что контекст OpenGL очень не любит, когда его трогают из чужого потока, что приводит к случайным и иногда сложно уловимым визуальным глюкам (см. прикрепленное фото).
Как это сделать? Воспользоваться декоратором
Пример использования из Durak GUI. Метод
Как это сделать? Воспользоваться декоратором
mainthread
, который поставит при вызове оригинальной функции поставит ее выполнение в следующий тик главного цикла приложения в главном потоке. Пример использования из Durak GUI. Метод
self.on_found_peer
вызывается из другого вспомогательного потока, но он меняет интерфейс, поэтому должен быть снабжен декоратором mainthread
:from kivy.clock import mainthread
class DurakFloatApp(App):
...
@mainthread
def on_found_peer(self, addr, peer_id):
print(f'Найден соперник {peer_id}@{addr}')
# делать что-то с GUI!
...
self.discovery = DiscoveryProtocol(self.my_pid, PORT_NO)
#
self.discovery.run_in_background(self.on_found_peer)
GitHub
GitHub - tirinox/durakmq: LAN Durak Card Game
LAN Durak Card Game. Contribute to tirinox/durakmq development by creating an account on GitHub.
Forwarded from Kali Linux
🚀 10 идиоматических приемов для эффективного программирования на Python
Программирование само по себе очень увлекательное занятие, а программирование на Python увлекательнее вдвойне, поскольку в данном языке существует много разных способов реализации одних и тех же функциональностей. Однако в большинстве случаев предпочтительно использовать реализации, присущие исключительно Python, характерной особенностью которых являются чистота и краткость кода.
Программирование на Python или любом другом языке — это не высшая математика, здесь многое зависит от степени сформированности ваших навыков. Если вы целенаправленно начнете писатькод в стиле Python (иначе говоря, питонический), то эти техники вскоре пополнят ваш набор инструментов, и постепенно их использование в проектах станет самым привычным делом. Рассмотрим ряд таких простых приемов, которые, я надеюсь, окажутся вам полезны.
Читать дальше
@pro_python_code
Программирование само по себе очень увлекательное занятие, а программирование на Python увлекательнее вдвойне, поскольку в данном языке существует много разных способов реализации одних и тех же функциональностей. Однако в большинстве случаев предпочтительно использовать реализации, присущие исключительно Python, характерной особенностью которых являются чистота и краткость кода.
Программирование на Python или любом другом языке — это не высшая математика, здесь многое зависит от степени сформированности ваших навыков. Если вы целенаправленно начнете писатькод в стиле Python (иначе говоря, питонический), то эти техники вскоре пополнят ваш набор инструментов, и постепенно их использование в проектах станет самым привычным делом. Рассмотрим ряд таких простых приемов, которые, я надеюсь, окажутся вам полезны.
Читать дальше
@pro_python_code
Enumerate
В традиционных языках программирования вам нужна переменная цикла для перебора различных значений контейнера. В Python это упростили: вы можете получить доступ к переменной цикла вместе со значением итерируемого объекта. Функция enumerate(x) возвращает две итерируемые переменные. Одна из них изменяется в диапазоне от 0 до len(x) - 1, а другая представляет собой элементы x.
В традиционных языках программирования вам нужна переменная цикла для перебора различных значений контейнера. В Python это упростили: вы можете получить доступ к переменной цикла вместе со значением итерируемого объекта. Функция enumerate(x) возвращает две итерируемые переменные. Одна из них изменяется в диапазоне от 0 до len(x) - 1, а другая представляет собой элементы x.
Для тех , кто ищет работу или фриланс на Python
@python_djangojobs - наш канал вакансий Python
@python_django_work - чат
@datascienceml_jobs вакансии Machine learning /Python
@Machinelearning_Jobs - чат
@hr_itwork - it вакансии
@python_djangojobs - наш канал вакансий Python
@python_django_work - чат
@datascienceml_jobs вакансии Machine learning /Python
@Machinelearning_Jobs - чат
@hr_itwork - it вакансии
Разбор URL
Функция urlparse из модуля urllib.parse разбирает URL на составные части: протокол, имя хоста, порт, путь, запрос и прочие.
Имя хоста, порт, логин и пароль объединены в поле netloc, но их компоненты доступны для чтения по этим атрибутам:
Собрать обратно ParseResult в URL:
Если мы хотим в URL поменять какие-то части, удобно делать вот так:
Однако таким способом нельзя поменять компоненты netloc, например, отдельно порт. netloc нужно менять целиком:
Функция urlparse из модуля urllib.parse разбирает URL на составные части: протокол, имя хоста, порт, путь, запрос и прочие.
>>> u1 = urlparse('https://tirinox:[email protected]:8080/some/page/index.html?page=2&action=login')
>>> u1
ParseResult(scheme='https', netloc='tirinox:[email protected]:8080', path='/some/page/index.html', params='', query='page=2&action=login', fragment='')
>>> u1.scheme, u1.query, u1.netloc
('https', 'page=2&action=login', 'tirinox:[email protected]:8080')
Имя хоста, порт, логин и пароль объединены в поле netloc, но их компоненты доступны для чтения по этим атрибутам:
>>> u1.username, u1.password, u1.hostname, u1.port
('tirinox', '1234', 'www.site.com', 8080)
Собрать обратно ParseResult в URL:
>>> u1.geturl()
'https://www.site.com:8080/some/page/index.html?page=2&action=login'
Если мы хотим в URL поменять какие-то части, удобно делать вот так:
>>> u1._replace(scheme='http').geturl()
'http://www.site.com:8080/some/page/index.html?page=2&action=login'
Однако таким способом нельзя поменять компоненты netloc, например, отдельно порт. netloc нужно менять целиком:
>>> u1._replace(netloc="user:[email protected]:8090").geturl()
'https://user:[email protected]:8090/some/page/index.html?page=2&action=login'
Needl – генератор случайного интернет-трафика
Позволяет скрыть ваш истинный трафик, что, по сути, делает ваши данные «иглой в стоге сена» и, следовательно, их труднее найти.
Цель проекта состоит в том, чтобы вашему интернет-провайдеру, правительству и т. д. было сложнее отслеживать вашу историю просмотров и привычки.
#GitHub | #Python #Privacy
@pro_python_code
Позволяет скрыть ваш истинный трафик, что, по сути, делает ваши данные «иглой в стоге сена» и, следовательно, их труднее найти.
Цель проекта состоит в том, чтобы вашему интернет-провайдеру, правительству и т. д. было сложнее отслеживать вашу историю просмотров и привычки.
#GitHub | #Python #Privacy
@pro_python_code
🐍 Пишем свою «Матрицу» на Python
Изучать новое можно по-разному. Одним нравится сначала штудировать теорию, а потом применять её на практике. Другие предпочитают учиться исключительно на примерах, найденных на любимом Stackoverflow. А кто-то вообще загружает навыки управления вертолётом и технику боевых единоборств по выделенному каналу прямо в мозг.
В любом случае без практических упражнений не обойтись. После ускоренной загрузки знаний Нео всё равно должен пройти спарринг с Морфеусом, чтобы научиться применять терабайты загруженных навыков на практике. Только вот упражнения бывают разные. Одно дело — лихо взлететь под потолок и проломить балки восточного спортзала, и совсем другое — методично час за часом шлифовать своё мастерство.
Читать дальше
@pro_python_code
Изучать новое можно по-разному. Одним нравится сначала штудировать теорию, а потом применять её на практике. Другие предпочитают учиться исключительно на примерах, найденных на любимом Stackoverflow. А кто-то вообще загружает навыки управления вертолётом и технику боевых единоборств по выделенному каналу прямо в мозг.
В любом случае без практических упражнений не обойтись. После ускоренной загрузки знаний Нео всё равно должен пройти спарринг с Морфеусом, чтобы научиться применять терабайты загруженных навыков на практике. Только вот упражнения бывают разные. Одно дело — лихо взлететь под потолок и проломить балки восточного спортзала, и совсем другое — методично час за часом шлифовать своё мастерство.
Читать дальше
@pro_python_code
⚡️ Атрибуты функций
defaults — кортеж с значениями по умолчанию. code — да-да, вы правильно поняли, код функции.
globals — глобальные значения в модуле, где функция была определена.
И хочу напомнить про dict — переменную, которая позволяет добавлять свои атрибуты функции.
#теория
__name__
возвращает имя функции.name__
возвращ— полный путь к функции (ClassC.ClassD.function).ции. __qualn
—
модуль, в котором она находится.defaults — кортеж с значениями по умолчанию. code — да-да, вы правильно поняли, код функции.
globals — глобальные значения в модуле, где функция была определена.
И хочу напомнить про dict — переменную, которая позволяет добавлять свои атрибуты функции.
#теория
DALL·E Flow — это модель, позволяющая создавать изображений высокой четкости из текста.
Github https://github.com/jina-ai/dalle-flow
Colab: https://colab.research.google.com/github/jina-ai/dalle-flow/blob/main/client.ipynb
@pro_python_code
Github https://github.com/jina-ai/dalle-flow
Colab: https://colab.research.google.com/github/jina-ai/dalle-flow/blob/main/client.ipynb
@pro_python_code