Python RU
13.4K subscribers
871 photos
41 videos
36 files
1.12K links
Все для python разработчиков

админ - @haarrp

@python_job_interview - Python собеседования

@ai_machinelearning_big_data - машинное обучение

@itchannels_telegram - 🔥лучшие ит-каналы

@programming_books_it - it книги

@pythonl

РКН: clck.ru/3Fmy2j
加入频道
🖥 Бесплатный курс программирование на языке Python 2023

1.Введение
Лекция
Практическое занятие

2.Простые скрипты
Лекция
Практическое занятие

3.Организация программ
Лекция
Практическое занятие

4.Объектно-ориентированное программирование
Лекция
Практическое занятие

5.Автоматизация тестирования
Лекция
Практическое занятие

6.Функциональное программирование
Лекция
Практическое занятие

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
SQLAlchemy Основные базовые операции: SELECT-запросы

В этом посте мы обсудим сложные SELECT-запросы, используя как SQLite, так и SQLAlchemy с Python. Наслаждайтесь!

Читать

@pro_python_code
5 приемов Python, которые отличают профессионалов от новичков

В этой статье мы рассмотрим пять подходов senior- и junior-программистов к решению распространенных задач. Все задачи взяты из адвент-календаря. Многие из них повторяются многократно в AoC и в других задачниках по программированию и тестах, с которыми вы можете столкнуться, например, на собеседовании при приеме на работу.

Для понимания разницы между профессионалом и новичком не стоит углубляться в решение всех задач AoC. Остановимся лишь на небольшой их части, позволяющей проиллюстрировать принципиальные отличия senior- от junior-разработчиков.

Читать

@pro_python_code
🖥 Полноценная замена модуля subprocess в Python.

Модуль sh - это полноценная замена модулю Python subprocess (поддержка PyPy3), которая позволяет вызывать любую программу терминала так, как если бы она была функцией. Этот модуль представляет собой обертку над терминалом.

$> pip install sh

>>> from sh import ifconfig
>>> net_docker = ifconfig('docker0'))

или

>>> import sh
>>> net_docker = sh.ifconfig('docker0')

>>> net_docker
# docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
# inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
# ether 02:42:be:1e:35:41 txqueuelen 0 (Ethernet)
# RX packets 0 bytes 0 (0.0
😎
# RX errors 0 dropped 0 overruns 0 frame 0
# TX packets 0 bytes 0 (0.0
😎
# TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Обратите внимание, что это не функции Python, это запуск бинарных команд терминала, установленных в системе путем динамического разрешения вашего $PATH, как это делает bash, а затем происходит обертывание бинарного файла в функцию. Таким образом, все установленные в систему Linux программы терминала легко доступны из кода Python.

Установка модуля sh в виртуальное окружение:
# создаем виртуальное окружение, если нет
$ python3 -m venv .venv --prompt VirtualEnv
# активируем виртуальное окружение
$ source .venv/bin/activate
# ставим модуль sh
(VirtualEnv):~$ python -m pip install -U sh


Github

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
Шпаргалка_по_Expected_Conditions_в_Selenium.pdf
5.4 MB
🔥 Полезная шпаргалка для начинающих автоматизаторов браузеров по EC (Expected Conditions) в Selenium+Python

@pro_python_code
«Ядро планеты Python»: большой интерактивный учебник по Python, который дополняет сообщество

Учебник охватывает основные темы Python, но коротко и достаточно ёмко, чтобы раскрыть специфику, удобство, красоту и силу этого языка.

Всё с кучей примеров и небольшими дорожными картами по каждой теме, а последнее изменение — меньше недели назад: https://github.com/amaargiru/pycore

#python
🖥 11 бесплатных курсов по Python

1. Автоматизация тестирования с помощью Selenium и Python - Stepik (INT)

2. Добрый, добрый Python - обучающий курс от Сергея Балакирева - Сергей Балакирев (Stepik) (BEG)

3. Основы программирования на Python - Coursera (BEG)

4. Питонтьютор: Бесплатный курс по программированию с нуля - Виталий Павленко, Владимир Соломатин, Д. П. Кириенко, команда Pythontutor (BEG)

5. "Поколение Python": курс для начинающих - Тимур Гуев, Руслан Чаниев, Анри Табуев (Stepik) (BEG)

6. "Поколение Python": курс для продвинутых - Тимур Гуев, Руслан Чаниев, Благотворительный фонд "Айкью Опшн" (Stepik) (INT)

7. Программирование на Python - Тимофей Бондарев, Павел Федотов (Stepik) (BEG)

8. Python: быстрый старт - Дмитрий Фёдоров (BEG)

9. Python для начинающих (BEG)

10. Python для тех, у кого лапки - Мария Чакчурина, Дмитрий Колосов (Stepik) (INT)

11. Python: основы и применение - Константин Зайцев, Антон Гардер (Stepik) (INT)

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Полезный совет: Проверяйте код с использованием линтера

Линтер анализирует код и ищет в нём ошибки, которые можно обнаружить автоматически. Перед отправкой изменений в репозиторий код всегда полезно проверять с помощью линтера.

Различные IDE и редакторы кода, вроде pycharm и VS Code, содержат встроенные линтеры и подсвечивают проблемные участки кода. Программист сам принимает решение о том, следовать этим рекомендациям или нет. Поначалу сообщения об ошибках, выдаваемые линтерами, могут показаться непонятными. Для того чтобы в них ориентироваться, стоит уделить некоторое время изучению используемого линтера. Это себя окупит.

Если говорить о линтерах, представленных инструментами командной строки, то в этой сфере я порекомендовал бы flake8. Этот линтер обладает разумными настройками, применяемыми по умолчанию. Обычно ошибки, о которых он сообщает, стоит исправлять. Если вы хотите строже относиться к своему коду — взгляните на pylint. Этот линтер способен выявлять множество ошибок, в число которых входят и те, о которых мы тут не говорим.

▍Примеры

Файл, который нужно почистить

В нижеприведённом коде (файл ping.py) можно увидеть некоторые проблемы и без применения линтера.

import requests
import os

def PingExample():
result = requests.get("https://example.com/ping")


Давайте проанализируем его с помощью flake8 и pylint.

Результаты анализа кода с помощью flake8

flake8 ping.py

ping.py:2:1: F401 'os' imported but unused
ping.py:4:1: E302 expected 2 blank lines, found 1
ping.py:5:5: F841 local variable 'result' is assigned to but never used

Результаты анализа кода с помощью pylint

pylint ping.py

************* Module ping
ping.py:1:0: C0114: Missing module docstring (missing-module-docstring)
ping.py:4:0: C0103: Function name "PingExample" doesn't conform to snake_case naming style (invalid-name)
ping.py:4:0: C0116: Missing function or method docstring (missing-function-docstring)
ping.py:5:4: W0612: Unused variable 'result' (unused-variable)
ping.py:2:0: W0611: Unused import os (unused-import)
ping.py:2:0: C0411: standard import "import os" should be placed before "import requests" (wrong-import-order)

--------------------------------------------------------------------
Your code has been rated at -5.00/10 (previous run: -5.00/10, +0.00)


@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Если вы используете сторонние библиотеки — добавьте в репозиторий файл requirements.txt

Если в проекте используются сторонние зависимости, об этом нужно сообщить. Легче всего это сделать, создав файл requirements.txt в корневой директории проекта. В каждой строке этого файла приводятся сведения об одной зависимости. Нужно, кроме того, добавить инструкции по работе с этим файлом в README. Подробности о requirements.txt можно найти в руководстве пользователя по pip.

▍Примеры

Файл requirements.txt для Flask-приложения

Добавление файла requirements.txt в корневую директорию проекта — это самый лёгкий способ отслеживания зависимостей. Можно, помимо сведений о самих зависимостях, дать сведения и об их версиях. Вот пример файла requirements.txt:

gunicorn
Flask>=1.1
Flask-SQLAlchemy
psycopg2


Указание более подробных сведений о зависимостях с использованием файла requirements.in

При работе над любым проектом всегда полезно иметь возможность воспроизведения его окружения. В результате, даже если вышла новая версия какой-нибудь библиотеки, можно использовать старую, проверенную в деле версию, работая с ней до тех пор, пока не будет решено перейти на новую. Это называется «фиксацией зависимостей». Легче всего это можно сделать, прибегнув к pip-tools. При таком подходе в вашем распоряжении окажется два файла: requirements.in и requirements.txt. Второй из них при этом вручную не модифицируют, просто добавляя его в репозиторий вместе с requirements.in. Вот как выглядит файл requirements.in:

gunicorn
Flask>=1.1
Flask-SQLAlchemy
psycopg2


Для того чтобы на основе этого файла был бы автоматически создан requirements.txt, файл requirements.in компилируют, используя команду pip-compile. Вот как выглядит автоматически сгенерированный файл requirements.txt:

#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile
#
click==7.1.2 # via flask
flask-sqlalchemy==2.4.4 # via -r requirements.in
flask==1.1.2 # via -r requirements.in, flask-sqlalchemy
gunicorn==20.0.4 # via -r requirements.in
itsdangerous==1.1.0 # via flask
jinja2==2.11.2 # via flask
markupsafe==1.1.1 # via jinja2
psycopg2==2.8.6 # via -r requirements.in
sqlalchemy==1.3.19 # via flask-sqlalchemy
werkzeug==1.0.1 # via flask

# The following packages are considered to be unsafe in a requirements file:
# setuptools

Как видите, готовый файл содержит сведения о точных версиях всех зависимостей.

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM