#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Изменение списка во время итерации по нему

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

odd = lambda x: bool(x % 2) # функция проверки числа на нечетность

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in range(10):
  if odd(numbers[i]):
    del numbers[i] # удаление элемента из списка во время итерации по нему

# Output:
Traceback (most recent call last):
if odd(numbers[i]):
IndexError: list index out of range

Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.

К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода. Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решения подобных проблем, что и показывает реализация кода ниже:

odd = lambda x: bool(x % 2) # функция проверки числа на нечетность
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

numbers = [n for n in numbers if not odd(n)] # генератор нового списка
print(numbers)

# Output:
[2, 4, 6, 8, 10]
Forwarded from Python Academy
Python 3.9.0 🎉

На днях выпустили новую версию Python, в которой добавили немного нового синтаксиса и несколько новых возможностей, а также оптимизировали некоторые моменты языка.

Из интересного стоит выделить:

– Оператор объединения словарей (PEP 584
– Встроенные аннотации дженерик типов (PEP 585)
– Смягчение грамматических ограничений декораторов (PEP 614)
– Строковые методы для удаления префикса и суффикса (PEP 616)

А ещё Python 3.9 не совместим с Windows 7, так как это версия ОС официально не поддерживается.

#updates #release
Forwarded from Инжиниринг Данных (Dmitry Anoshin)
Если Tableau дашборды мы шарим через Tableau Public, то работы в Python мы шарим через https://nbviewer.jupyter.org/ (A simple way to share Jupyter Notebooks)
Forwarded from # pip install (Student B.)
🔥 Переменное количество аргументов Функции в Python

Наш чат: @python_scripts

Мы можем использовать специальный синтаксис *args и **kwargs внутри функции для передачи переменного количества аргументов.

Использование *args и **kwargs по сути обеспечивает читабельность и удобство, но их следует использовать с осторожностью.

Подробнее: https://python-scripts.com/def-args-kwargs
Forwarded from Moscow Python (Valentin Dombrovsky)
Раньше в пакете dry-python returns мы предоставляли несколько контейнеров, которые значительно упрощали жизнь Python разработчикам в некоторых случаях: работа с None и исключениями, внедрение зависимостей, работа с асинхронностью и так далее. Теперь мы сделали следующий шаг: вы сами можете писать любые нужные вам контейнеры! Мы реализовали поддержку Higher Kinded Types и наборы универсальных интерфейсов, чтобы все работало для ваших типов, так же как и для наших. Более того, мы прикрепили к каждому интерфейсу по набору законов. Такие "законы как значения" позволяют нам генерировать сотни тестов к вашим контейнерам всего из одной строчки кода. Попробуйте!
https://www.youtube.com/watch?v=jL-t0jxEM40

Подробней о новинках в dry-python и многом другом поговорим на Russian Python Week!
Регистрация - https://conf.python.ru
Мастер-класс "Dry-python Functional Workshop" - https://conf.python.ru/moscow/2020/ab...
Drylabs: https://drylabs.io
Dry-python: https://dry-python.org
Чат dry-python в Телеграме (англ.): https://t.me/drypython
Команда pip рассматривает возможность удаления pip search или изменения способа его работы. Чтобы помочь обосновать решение, расскажите о своем опыте использования pip search.

https://proglib.io/w/619c16e6
Automate the boring stuff with Python, 2nd Edition (2019)
Автор: Al Sweigart
Количество страниц: 504

Автор показывает, как писать программы, которые могут сделать за вас рутинную работу. Книга поможет новичкам разобраться в программировании на Python и сразу применить свои знания. Данное издание этой книги включает новую главу о проверке входных данных, а также учебные пособия по автоматизации Gmail и Google Sheets и советы по автоматическому обновлению файлов CSV.

Скачать книгу
Что делает кодовую базу Python правильной?

https://proglib.io/w/4633dc75
В чем разница между методами type() и isinstance() и какой из них лучше подходит для проверки типа объекта?

https://proglib.io/w/ef566860
This media is not supported in your browser
VIEW IN TELEGRAM
enum, перечисления
Программист время от времени сталкивается с необходимостью ограничить множество допустимых значений для некоторого типа данных. Например, день недели это 7 различных значений, а месяцев у нас 12. Для удобного хранения подобных данных придуманы перечисления - enum.
Стандартная реализация enum появилась в Python начиная с версии 3.4 ( PEP 435. До этого ее легко заменяли словарями.
Реализация представлена модулем enum. Модуль содержит несколько классы EnumIntEnum (константы могут иметь только тип int) и декоратор unique, который проверяет ваш набор констант на дубликаты.
Forwarded from Python Quiz
Какая константа не предусмотрена в Python по умолчанию?🐍🤨🐍
Anonymous Quiz
27%
NotImplemented
38%
Ellipsis
35%
ValueN
Forwarded from Python Academy (Adrian K.)
Перечисления (Enum)

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

Python 3 поддерживает, благодаря классу Enum, простой механизм работы с перечислениями. Перечисления удобно использовать для хранения списков констант. Константы, в противном случае, оказываются беспорядочно разбросанными в коде.

Из документации по Python 3 можно узнать о том, что перечисление — это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность. А также перечисления можно обходить с помощью циклов.
В чем разница между методами type() и isinstance() и какой из них лучше подходит для проверки типа объекта?

https://proglib.io/w/ef566860
🐍🗄 Управление данными с помощью Python, SQLite и SQLAlchemy

На одном примере сравниваются три модели управления данными: csv-файлы, SQL-запросы к простой базе данных на SQLite и контроль информации в виде объектов Python с SQLAlchemy. В конце пример веб-приложения на Flask с использованием SQLAlchemy.

https://proglib.io/sh/fTBqinaS1w
Forwarded from Python Academy
Новый оператор объединения словарей

В Python есть много разных способов объединить несколько словарей. Мне, например, больше всего нравилась распаковка словарей в один новый.

Но в последнем обновлении добавили специальный оператор |, с помощью которого можно это делать ещё проще.

#словари
Forwarded from Python Academy
​​Модуль subprocess

Всем доброго вечера, сегодня мы поговорим немного о модуле subprocess:)

Данный модуль предоставляет унифицированный интерфейс для создания дополнительных процессов с вызовом программ, а также может подключать к стандартным потокам ввода, вывода и вывода об ошибках. Модуль был добавлен в стандартную библиотеку python на замену os.system() и os.popen().

Для создания процессов в subprocess используются функции run(), call(), check_call(), check_output(), а также класс Popen.

Сегодня мы расскажем о функциях call, check_call, check_output и run, а завтра поговорим о Popen. Они используются, когда требуется запустить программу и дождаться ее выполнения.

call - вызывается для создания процесса, ожидает выполнения и возвращает код выполнения (если программа отработала корректно, вернется 0).

check_call - делает тоже самое только еще и проверяет возвращаемое значение, если код выхода указывает, что произошла ошибка, то функция выбросит исключение CalledProcessError.

check_output - использовалась, когда нужно было захватить вывод запущенного процесса. Эта функция была нужна, так как потоки ввода и вывода запущенного процесса через call привязывались именно к вводу и выводу данного процесса, поэтому вывод таким образом захватить не получится.

run - это функция пришла в python версии 3.5 на замену трем предыдущим и умеет все, что и они и немножко больше (данные три функции были оставлены для обратной совместимости). run() возвращает объект CompletedProcess, который привязан к результату.

Для захвата вывода процесса нам нужно передать capture_output=True, после чего в аргументах объекта stdout и stderr будут записаны соответствующие выводы, запущенной программы. Но по умолчанию вывод будет вывод будет в байтах, чтобы получить читабельный текст мы также передаем флаг text=True.

Иногда программа ожидает от нас ввода из стандартного потока stdin, в этом случае мы можем передать ввод через аргумент input.

Для того, чтобы породить исключение в случае получения кода возврата об ошибке мы можем передать флаг check=True.

И как бонус у этой функции есть аргумент timeout позволяющий передать время, через которое процесс должен быть принудительно завершен. В случае принудительного завершения будет выброшено исключение TimeoutExpired.
Взаимодействовать с файлами в Python
#Python

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