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
加入频道
🐍5 удивительных скрытых возможностей Python. Часть 2

Скрытая функция 1: List Stepping
Эта функция помогает выбирать с необходимым шаговым интервалом элементы из списка. Синтаксис здесь такой:
list[start:end:step]
start: индекс первого контролируемого элемента в списке;
end: индекс первого элемента вне зоны контроля;
step: шаг сортировки.

Предположим, есть список с числами от 0 до 9, необходимо выбрать только четные числа. Сделать это можно так:
my_list: list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers: list = my_list[::2] # [0, 2, 4, 6, 8]


Здесь мы не указываем начальный и конечный индексы. Поэтому Python считает стартовым первый элемент, а конечным — последний (т. е. весь список). Затем указываем шаг — 2. Поэтому Python начнет с первого элемента и вернет его (т. е. 0). Затем переместится на 2 шага (перейдет к 1, а затем к 2) и вернет результат (т. е. 2). Этот процесс повторяется до конца списка.

☝️Еще один мощный трюк с пошаговым списком — инвертированный список через отрицательную индексацию.
my_list: list = [1, 2, 3, 4, 5]
reversed_list: list = my_list[::-1] # [5, 4, 3, 2, 1]


Скрытая функция 2: связывание операторов сравнения
В программировании часто приходится выполнять множественные сравнения как часть логического потока.

Предположим, есть переменная x, и мы хотим убедиться, что x больше 1, но меньше 10. Обычно делают что-то вроде:
x: int = 5

condition1: bool = x > 1 # проверить, что х больше 1
condition2: bool = x < 10 # проверить, что х меньше 10

print(condition1 and condition2) # True


Python позволяет объединить сравнения:
x: int = 5

print(1 < x < 10) # True
print(10 < x < 20) # False


Также можно сделать что-то вроде:
x: int = 5

print(5 == x > 4) # True
print(x < 10 < x*10 < 100) # True


Скрытая функция 3: комплексные/мнимые числа
Всем, кто изучал математику, знакомо понятие комплексных чисел. Интересная особенность Python, о которой многие не подозревают, заключается в том, что он полностью поддерживает комплексные числа.
В математике для представления комплексного числа обычно используют символ i. В Python мы используем j или вызываем функцию complex().
# Создание комплексных чисел
z1 = 2 + 3j
z2 = complex(4, -2) # (4 -2j)


# Доступ к действительным и мнимым частям
print(z1.real) # 2.0
print(z1.imag) # 3.0


# Арифметика с комплексными числа
z3 = z1 + z2 # (6+1j)
z4 = z1 * z2 # (14+8j)
z5 = z1 / z2 # (0.1+0.8j)


# Сопряжение комплексного числа
z6 = z1.conjugate() # (2-3j)


Скрытая функция 4: доступ к последнему результату по символу “_”
Возможно, вы замечали, что многие программисты резервируют символ _ в качестве заполнителя некоторых переменных, которые не используются или не нужны в процессе выполнения программы.

Между тем (и многие об этом не знают), по умолчанию Python присваивает результат последнего выполнения переменной этому символу _.
x: int = 5
y: int = 99

x + y # 104
print(_) # 104


Скрытая функция 5: распаковка аргумента
Предположим,
есть некоторая произвольная функция:
def my_sum(a, b, c):
return a + b + c


Есть список из 3 чисел, которые нужно передать функции. Обычно пишут:
my_list = [1, 2, 3]

result = my_sum(my_list[0], my_list[1], my_list[2])
print(result) # 6
Вместо этого в Python можно сделать так:

result = my_sum(*my_list)
print(result) # 6


Символ * распаковывает весь список и передает каждый элемент в качестве параметра функции. Далее также можно распаковать словарь с помощью **.
# Пример распаковки аргумента словаря
def my_func(a, b, c):
print(f"a={a}, b={b}, c={c}")

my_dict = {'a': 1, 'b': 2, 'c': 3}

my_func(**my_dict)
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Как стать инженером Python в 2023 году

Требования к младшему Python-инженеру
Вот общие требования, которые сегодня часто указывают в вакансиях для Python-инженеров.

1. Степень бакалавра в области компьютерных наук или смежной сфере.
2. 1–2 года опыта работы с Python и соответствующими библиотеками (такими как Django и Flask).
3. Знание технологий веб-разработки (HTML, CSS, JavaScript и т. д.).
4. Знание баз данных (SQL, MySQL, MongoDB и т. д.).
5. Владение ведущими практиками разработки программного обеспечения (контроль версий, тестирование, отладка и т. д.).
6. Высокий уровень навыков решения задач и критического мышления.
7. Умение работать в команде.
8. Развитые навыки письменной и устной коммуникации.

Обсудим подробно самые важные требования.

Глубокое знание Python
Конечно, вы должны освоить Python. Но вопрос в том, насколько глубоко? Когда-то было достаточно изучить основные понятия и, возможно, один фреймворк, но все изменилось — теперь важно знать язык досконально.

К примеру, вы должны быть готовы ответить на подобные вопросы:

На какой структуре данных основаны словари Python?
Как в Python решается проблема ромба?
В каком порядке будут выполняться несколько декораторов, примененные к одной функции?

Вам следует знать Python как свои пять пальцев.

Но дело не только в написании кода, а в написании оптимизированного кода. Вы должны профессионально оперировать генераторами списков и словарей, декораторами, прочими генераторами и т.д. Не забудьте и об алгоритмах — можете потренироваться на задачах Leetcode, чтобы отточить свои навыки.

📌 Продолжение

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🟡 This week's digest of useful content from the world of Python

Дайджест полезных материалов из мира Python за неделю.

Почитать:

Разработка событийно-ориентированных микросервисов с помощью Python
Бережем время, деньги, нервы: наш опыт улучшения справочника факторов для ML-моделей оценки риска. Часть 2
Я люблю питон, и вот почему он меня бесит
Список популярных утечек с GitHub: Анализ репозиториев компаний
PyCon Russia 2023. Зона Python. Краткий обзор докладов
Менеджеры контекста в Python
Что происходит, когда запускаешь «Hello World» в Linux
Ускорение кода с помощью многопроцессорной обработки в Python
Руководство по созданию бота YouTube с помощью LangChain и Pinecone Vectorstore
Перехват FTP-пароля с помощью Python
Как Python использует сборку мусора для эффективного управления памятью
Converting An Image File Into PDF Using Python
Introducing Kids to Coding Through Tkinter: A Fun Path to Python's Graphical User Interfaces

Посмотреть:
🌐Как работать с декораторами в Python. Часть 1
🌐 Методы сокращения и улучшения кода на Python
🌐 Продвинутые методы улучшения кода на Python
🌐 Создаем продвинутый интерфейс на Python
🌐 Harvard CS50’s Artificial Intelligence with Python – Full University Course

Хорошего дня!

@pro_python_code
🖥 Хакаем декоратоы на Python. Часть 1

🎞 Video

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Руководство по модулю Python itertools

Что такое itertools?
Itertools  — это Python-модуль, который предоставляет набор функций для работы с итерируемыми объектами. Итерируемый объект — это любой объект, предоставляющий возможность пройти по своим элементам, например список, кортеж и словарь. Itertools позволяет выполнять стандартные операции с итерируемыми объектами, такие как фильтрация, группировка и объединение.

Модуль Itertools предоставляет несколько функций, позволяющих манипулировать итерируемыми объектами. Рассмотрим подробнее наиболее полезные функции itertools.

1. permutations(): эта функция возвращает все возможные перестановки итерируемого объекта с уникальным расположением элементов в итераторе.

Ввод:

import itertools

letters = ['a', 'b', 'c']
perms = itertools.permutations(letters)

for perm in perms:
print(perm)
Вывод:

('a', 'b', 'c')
('a', 'c', 'b')
('b', 'a', 'c')
('b', 'c', 'a')
('c', 'a', 'b')
('c', 'b', 'a')
2. combinations(): эта функция возвращает все возможные комбинации элементов в итерируемом объекте, не повторяя в итераторе ни одной из комбинаций. Если указан опциональный аргумент r, будут возвращены только комбинации длины r.

Ввод:

import itertools

numbers = [1, 2, 3, 4]
combs = itertools.combinations(numbers, 2)

for comb in combs:
print(comb)
Вывод:

(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

3. product(): эта функция возвращает декартово произведение итерируемых объектов. Получаемый итератор содержит кортежи, каждый из которых формируется путем отбора по одному элементу из каждого итерируемого объекта. Если указан опциональный аргумент repeat, то входные итерируемые объекты повторяются указанное количество раз.

Ввод:

import itertools

colors = ['red', 'green', 'blue']
sizes = ['small', 'medium', 'large']
combos = itertools.product(colors, sizes)

for combo in combos:
print(combo)
Вывод:

('red', 'small')
('red', 'medium')
('red', 'large')
('green', 'small')
('green', 'medium')
('green', 'large')
('blue', 'small')
('blue', 'medium')
('blue', 'large')

4. groupby(): эта функция группирует элементы в конкретном итерируемом объекте на основе значения, возвращаемого функцией key. Получаемый в результате итератор содержит кортежи, в каждом из которых первый элемент — ключ группировки, а второй — итератор по элементам в группе.

Ввод:

import itertools

fruits = [{'name': 'apple', 'color': 'red'},
{'name': 'banana', 'color': 'yellow'},
{'name': 'orange', 'color': 'orange'},
{'name': 'pear', 'color': 'green'},
{'name': 'strawberry', 'color': 'red'}]

fruits.sort(key=lambda x: x['color'])

for color, group in itertools.groupby(fruits, lambda x: x['color']):
print(color)
for fruit in group:
print(fruit['name'])

Вывод:

green
pear
orange
orange
red
apple
strawberry
yellow
banana

5. chain(): эта функция объединяет указанные итерируемые объекты в один итерируемый объект. Она возвращает итератор, в котором последовательно выполняется перебор элементов каждого итерируемого объекта.

Ввод:

import itertools

colors = ['red', 'green', 'blue']
sizes = ['small', 'medium', 'large']

for item in itertools.chain(colors, sizes):
print(item)
Вывод:

red
green
blue
small
medium
large
6. count(): эта функция возвращает итератор, который производит бесконечную последовательность чисел, начиная с заданного начального значения и увеличивая на заданное значение шага.

Ввод:

import itertools

for i in itertools.count(5, 2):
print(i)
if i > 15:
break
Вывод:

5
7
9
11
13
15
17

7. cycle(): эта функция возвращает итератор, который производит элементы конкретного итерируемого объекта многократно и бесконечно.

Ввод:

import itertools

colors = ['red', 'green', 'blue']

for color in itertools.cycle(colors):
print(color)
Вывод:

red
green
blue
red
green
blue
red
...

8. dropwhile(): эта функция возвращает итератор, который производит элементы конкретного итерируемого объекта после того, как функция-предикат в первый раз вернет False.

📌Читать дальше

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
Универсальный рецепт по написанию и аннотированию декораторов Python.

https://www.youtube.com/watch?v=2n2zdpr1F-I

@pro_python_code
🖥 Pyserde

С помощью pyserde можно легко сериализовать и десериализовать объекты класса данных.

Сериализация преобразует данные класса данных в сериализованный формат для удобства хранения и передачи.

Десериализация восстанавливает объект класса данных из сериализованных данных.

Github
Docs

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Анализ данных для задач НЛП

Для успешного NLP-проекта одним из важнейших этапов является предварительная обработка данных. В этой статье мы рассмотрим все шаги, связанные с анализом данных для любой задачи НЛП.

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

Настройка среды
Первым шагом любого проекта является настройка среды, т.е. установка важных пакетов и импорт важных библиотек.
!pip install nltk
!pip install pandas


import pandas as pd
import nltk
from nltk.tokenize import sent_tokenize,word_tokenize
from nltk.stem import PorterStemmer
from nltk.corpus import stopwords
import re

Обзор данных
Следующим этапом проекта будет загрузка датасета. В данном случае мы будем использовать набор данных твитов о катастрофах из Kaggle.
Мы можем загрузить наш датасет с помощью библиотеки pandas.

df = pd.read_csv("/train.csv")

Для того чтобы получить общее представление о данных, мы можем просмотреть верхние строки набора данных с помощью функции head в pandas:

df.head(10)

Для анализа столбца ключевых слов мы используем библиотеку seaborn, которая позволяет визуализировать распределение ключевых слов и их корреляцию с целью.

plt.figure(figsize=(10,70))
sns.countplot(data=df,y="keyword",hue="target",saturation=0.50)
plt.legend(bbox_to_anchor=(1.02, 1), loc='upper left', borderaxespad=0)
plt.show()


📌 Продолжение

@pro_python_code
🐍 Python 3.13.0a0 Что нового?

Захватывающие возможности

В настоящее время Python 3.13.0a0 находится в стадии разработки и содержит ряд новых возможностей и улучшений. В этой статье мы рассмотрим некоторые из новых возможностей Python 3.13.0a0 и приведем несколько примеров кода для начала работы.

Самой последней версией является 3.11.4, а 3.12 находится в стадии раннего предварительного просмотра. Вы можете лучше понять Python 3.13.0a0, прочитав эти статьи о Python 3.11.4 и Python 3.12.

Новые возможности
Новых модулей пока нет, но есть несколько улучшенных модулей: array, io, pathlib, traceback, typing.

массив: Код типа ‘w’ можно использовать для строк Unicode.
io: метод close() финализатора theio.IOBase теперь регистрирует ошибки с помощью sys.unraisablehook.
pathlib: Добавлены изменения в pathlib.PurePath.match(), pathlib.Path.glob() и rglob().
tracebackВ traceback.TracebackException.format_exception_only() добавлен параметр show_group.
typing: typing.get_protocol_members() был добавлен набор членов, определяющих typing.Protocol. typing.is_protocol() был добавлен для проверки того, является ли класс typing.Protocol.

Оптимизация производительности
Из программы PEP 594:

Утраченные функции:
1. Утрата методов wave.Wave_read и wave.Wave_write
2. Устранение аргументов ключевых слов при создании классов typing.NamedTuple
3. Устранение использования функционального синтаксиса при создании классов typing.NamedTuple и typing.TypedDict
4. Утрата кода формата массива ‘u’.
5. Утрата функций ctypes.SetPointerType() и ctypes.ARRAY()

Удаленные функции
1. Удаление модуля telnetlib.
2. Удаление программы 2to3 и модуля lib2to3.
3. Удаление пространств имен typing.io и typing.re.
4. Удаление класса webbrowser MacOSX
5. Удаление поддержки использования объекта pathlib.Path в качестве менеджера контекста
6. Удаление класса configparser.LegacyINterpolation.
7. Удаление метода turtle.RowTurtle.settiltangle().
8. Удаление некоторых функций unittest
9. Удаление модулей cgi и cgitb
10. Удалены различные модули и пакеты, такие как sndhdr, pipes, ossaudiodev, mailcap, spwd, nntplib, nis, xdrlib, msilib, crypt, uu, aifc, audioop, chunk, imghdr, unittest.TestProgram.usageExit(), tkinter. tix, макросы trashcan, locale.resetlocale(), logging.Logger.warn(), параметры urllib.request.urlopen(), атрибут webbrowser.MacOSXOSAScript._name, функция re.template и флаг re.TEMPLATE

Изменения в API на языке C
Утратил актуальность:
Утратили свою актуальность старые функции инициализации Python, такие как

PySys_ResetWarnOptions()
PY_NAME_GetExecPrefix()
Py_GetPath()
Py_GetPrefix()
Py_GetProgramFullPath()
Py_GetProgramName()
Py_GetPythonHome()
Утратила актуальность функция Py_ImportModuleNoBlock(), удаление которой запланировано в Python 3.15. Удалены:

Удалено:
Удалены функции, устаревшие в Python 3.9, такие как PyEval_CallObject(), PyEval_CallObjectWithKeywords(), PyEval_CallFunction(), PyEval_CallMethod() иPyEval_CFunction_Call().

Следующие старые функции для настройки инициализации Python, устаревшие в Python 3.11, были удалены:
PySys_AddWarnOptionUnicode(): Вместо этого используйте PyConfig.warnoptions.
PySys_AddWarnOption(): Вместо этого используйте PyConfig.warnoptions.
PySys_AddXOption(): Использовать PyConfig.xoptions.
PySys_HasWarnOptions(): Вместо этого используйте PyConfig.xoptions.
PySys_SetArgvEx(): Вместо этого установите PyConfig.argv.
PySys_SetArgv(): Установить вместо PyConfig.argv.
PySys_SetPath(): Установить вместо PyConfig.module_search_paths.
Py_SetPath(): Вместо этого установить PyConfig.module_search_paths.
Py_SetProgramName(): Вместо этого установить PyConfig.program_name.
Py_SetPythonHome(): Вместо этого установить PyConfig.home.
Py_SetStandardStreamEncoding(): Установить вместо PyConfig.stdio_encoding.
_Py_SetProgramFullPath(): Установить вместо PyConfig.executable.

@pro_python_code
Легкий способ получать свежие обновлении и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:


Машинное обучение: @ai_machinelearning_big_data
Go: @Golang_google
C#: @csharp_ci
Базы данных: @sqlhub
Python: @pythonl
C/C++/: @cpluspluc
Data Science: @data_analysis_ml
Devops: @devOPSitsec
Rust: @rust_code
Javascript: @javascriptv
React: @react_tg
PHP: @phpshka
Docker: @docker
Android: @android_its
Мобильная разработка: @mobdevelop
Linux: linuxacademy
Big Data: t.me/bigdatai
Хакинг: @linuxkalii
Java:@javatg
Собеседования: @machinelearning_interview


💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy

🔥ИТ-Мемы: t.me/memes_prog

🇬🇧Английский: @english_forprogrammers
🟡 Дайджест полезных материалов из мира :python за неделю

Почитать:
Стейты, БД и логи — разбираем шаблон диалогового Телеграм бота
Python 3.13.0 Что нового?
Как я научил искусственный интеллект создавать барабанные партии
Расширение возможностей веб-приложений с помощью
WebAssembly и Python
Советы и рекомендации по работе с Python
Проектирование и добавление функционала в концепт ForTeаToo (42)
Простая нейронная сеть без библиотек и матриц. Эволюционный алгоритм
Прикладное использование теории построения информационно-исторических систем
Простая нейронная сеть без библиотек и матриц. Обучение с учителем
Гиперпараметрический поиск и оптимизация моделей
Теория разработки информационно-исторических систем с реализацией концепта
Как дообучить LLaMA бесплатно и без программирования: как создать тупого друга
Introduction to Sets in Python
How to Add Color to Old Black and White Movies and Images | using DeOldify
A way to (actually) run Python code in ChatGPT
What is Machine Learning?
Webhook and Ansible
Navigating Databases with Python: A Beginner-Friendly Guide
Send Automated Emails (smtplib & Python) Through Lambda
Benefits of hybrid search
How to change desktop wallpaper in Python
Generate Html code using python

Посмотреть:
🌐 Универсальный рецепт по написанию и аннотированию декораторов Python.

Хорошего дня!

@pro_python_code
🐍 Советы и рекомендации по работе с Python

Упрощенный оператор if
m = 3

# don't use this
if m == 1 or m == 2 or m == 3 or m == 4:
print("if statement 1")

# use this
if m in [1, 2, 3, 4]:
print("if statement 1")


Обмен двумя переменными
Python предоставляет возможность делать назначения и менять их местами в одной строке.
x, y = 5, 10
print(x, y) # 5 10

x, y = y, x
print(x, y) # 10 5


Использование тернарного оператора для условного присваивания
Тернарные операторы – это краткое обозначение операторов if-else в одной строке.
# if_true if expression else if_false

condition = True
print("Condition is True" if condition else "Condition is False")

Перечисление встроенных функций
С помощью перечислителей можно работать как с индексом, так и со значением, когда вы находитесь в цикле.
my_list = [10, 20, 30, 40]
for i, value in enumerate(my_list):
print(i, value)

# 0 10
# 1 20
# 2 30
# 3 40


Функция Zip
Функция zip объединяет элементы из нескольких итерируемых объектов в кортежи.
list1 = [1, 2, 3, 4, 5]
list2 = [5, 4, 3, 2, 1]

print(zip(list1, list2))
# [(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)]


Создание словарей с помощью функции Zip
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)

# {1:4, 2:5, 3:6}
print(dict(zip(tuple1, tuple2)))
🆕 Python 4.0: программирование следующего поколения

Интересные нововведения в Python 4.0

1. Улучшение производительности
Улучшение производительности Python 4.0, направленное на повышение скорости и эффективности выполнения, позволит разработчикам создавать высокопроизводительные приложения.

Основные способы улучшения производительности:
Объемная оптимизация. Python 4.0 представляет объемные оптимизации, которые оптимизируют использование памяти, уменьшая объем памяти, занимаемый программами на Python, и повышая общую производительность.
Параллельная обработка. Python 4.0 поддерживает параллельную обработку, обеспечивая улучшенную поддержку многопоточности и многоядерных архитектур, позволяя разработчикам использовать весь потенциал современного оборудования.
JIT-компиляция (JIT, Just-In-Time — “оперативно”). Внедрение JIT-компиляции в Python 4.0 позволяет динамически компилировать код Python во время выполнения, что приводит к ускорению выполнения и повышению производительности.

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

Наиболее ощутимые дополнения:
Стиль V — 5. Python 4.0 вводит новое соглашение о стиле, известное как V — 5, которое способствует более чистой организации кода, улучшению читабельности и согласованности в проектах.
Стиль UV — 4. Python 4.0 также вводит соглашение о стиле UV — 4, которое фокусируется на простоте и сокращении шаблонного кода, облегчая разработчикам написание и сопровождение программ на Python.
Расширенные подсказки типов. Python 4.0 расширяет возможности подсказок типов, позволяя разработчикам предоставлять более точные аннотации типов и обеспечивая лучшую поддержку статического анализа и инструментария.
Расширенная стандартная библиотека. Python 4.0 обогащает стандартную библиотеку новыми модулями и функциональными возможностями, предоставляя разработчикам больше инструментов и ресурсов для решения более широкого круга задач программирования.

3. Улучшение опыта разработчиков
В Python 4.0 большое внимание уделяется оптимизации общего опыта разработчиков за счет устранения болевых точек и предоставления новых инструментов и возможностей. Самые заметные улучшения:

Усовершенствованный инструментарий. Python 4.0 представляет новые и улучшенные инструменты для форматирования кода, линтинга, отладки и тестирования, облегчая разработчикам написание чистого и удобного кода.
Оптимизированная упаковка и дистрибуция. Python 4.0 упрощает упаковку и дистрибуцию приложений Python, предлагая лучшую поддержку управления зависимостями, версионирования и развертывания.
Сотрудничество в рамках сообщества. Python 4.0 способствует расширению сотрудничества членов сообщества, предоставляя улучшенную документацию, оптимизируя процесс внесения вкладов участников и способствуя созданию благоприятной и инклюзивной среды для разработчиков всех уровней.
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Практика парсинга Python

🎞 Video

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Большой гайд по парсингу на Python. Часть 3 Работаем с selenium

🎞 Video

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка полезных фишек с кодом.

Проверка наличия элемента в множестве
Мы можем проверить, находится ли тот или иной элемент в списке с помощью оператора in:

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

if 5 in large_list:
print("5 найден в списке.")
else:
print("5 не найден в списке.")

То же применимо и для множеств (set):

large_set = set(large_list)

if 5 in large_set:
print("5 найден в множестве.")
else:
print("5 не найден в множестве.")

Автоматическое добавление ключа словарю
Если создать словарь средствами collections.defaultdict, добавить хотя бы один элемент, а затем обратиться к несуществующему ключу:

from collections import defaultdict

my_dict = defaultdict(int)

my_dict['apple'] = 3
my_dict ['banana' ] = 2
print(my_dict['orange'])
print(my_dict)


то интерпретатор самостоятельно добавит новый элемент:

... 0
... defaultdict(<class 'int'>, {'apple': 3, 'banana': 2, 'orange': 0})


try / except + else + finally
Мастхэв для начинающих питонистов — пара try / except, обработчик исключений. Шикарным дополнением к такому блоку является, на мой взгляд, else: он опишет поведение программы на случай других ошибок, которых может быть немало!

Более того, добавив finally, вы выполните завершающие работы, например, скомандуете выслать уведомление:

try:
>>> result = 10 / 2
>>> except ZeroDivisionError:
>>> print( "Ошибка: деление на ноль невозможно.")
>>> else:
>>> print("Результат:", result)
>>> finally:
>>> print( "Программа выполнена.")
... Результат: 5.0

... Программа выполнена.

Проверка существования переменной с помощью «моржового» оператора
Если мы объявили две переменные, но не задали любой из них значение, то с помощью оператора := (Walrus Operator) можно спасти программу от падения и добавить обрабатывающую логику. В первом случае, в переменные name1, name2 мы ничего не записали, значит, программа зайдет в блок else:

>>> if name == '__main__':
>>> name1, name2 = '', ''
>>>
>>> if name := name1 or name2:
>>> print(name1)
>>> print('Успешно!')
>>> else:
>>> print('Имя не найдено...')... Имя не найдено...

Во втором случае заполнена только одна из переменных, но программа отработает без ошибки:

>>> if name == '__main__':
>>> name1, name2 = 'Сергей', ''
>>>
>>> if name := name1 or name2:
>>> print(name1)
>>> print('Успешно!')
>>> else:
>>> print('Имя не найдено...')
... Сергей
... Успешно!

Оператор match для проверки типа
Теперь освоение новых библиотек у вас точно ускорится.


Порой, трудно понять, какой тип данных возвращает функция или метод. В таких случаях помогают match и встроенные функции приведения к тому или иному типу данных:

>>> var = 1
>>>
>>> match var:
>>> case str():
>>> print('Строковый тип')
>>> case bool():
>>> print('Булевый тип')
>>> case float():
>>> print('Число с плавающей запятой')
>>> case int():
>>> print('Целочисленный тип')
>>> case list():
>>> print('Список')
>>> case None:
>>> print("None")
>>> case _:
>>> print('Другой тип данных')... Целочисленный тип

Встроенные функции попытаются привести к своему значению переменную. Но если положить в var единицу, как примере выше, то мы минуем float().

Чтобы программа не упала, стоит заложить дальнейшую обработку var только в подходящие функции-наследнице кейсы.
Включение генераторов, сетов
В предыдущей статье с фишками я рассказывала, что есть эффективный способ генерировать списки — «списковое включение» (List Comprehension):

names = ['Данил','Михаил', 'Оля']
[x for x in names if"a"in x]] # Выберет имена, где есть "а"... ['Данил', 'Михаил']

Оказывается, этому поддаются и другие составные типы — генераторы и сеты.

>>> s = {s*2 for s in range(10)} # Перемножит числа 1-10 на два
>>> print(s)
... {0, 2, 4, 6, 8, 10, 12, 14, 16, 18}


@pro_python_code
✔️ 20 экспертных советов по эффективному использованию Python

1. Используйте списковые выражения. Списковое выражение — это лаконичный и элегантный способ создания списков на основе существующих, устраняющий необходимость в традиционных циклах for и условиях if. Освоив эту технику, вы сможете оптимизировать свой код и сделать его более читабельным.

2. Применяйте генераторы. Генераторы экономят память и позволяют выполнять итерации с большими наборами данных, не загружая все сразу в память. Они идеально подходят для сценариев, в которых оптимизация памяти имеет решающее значение.

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

4. Используйте менеджеры контекста с оператором with. Оператор with позволяет работать с ресурсами, требующими операций setup и teardown. Используя менеджеры контекста, вы обеспечите правильное управление ресурсами даже при возникновении исключений.

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

6. Изучите лямбда-функции. Лямбда-функции предоставляют лаконичный путь определения небольших анонимных функций. Они особенно полезны, когда нужно определить простую функцию “на лету”, без необходимости полного объявления функции.

7. Оптимизируйте производительность с помощью Cython. Cython — это расширенная версия Python, которая позволяет писать высокопроизводительный код за счет добавления статической типизации и компиляции в C. Выборочная оптимизация критических участков кода с помощью Cython позволяет добиться значительного повышения скорости.

8. Освойте регулярные выражения. Регулярные выражения представляют собой мощный механизм для сопоставления шаблонов и работы с текстом. Потратьте время на изучение регулярных выражений и используйте их возможности для решения сложных задач обработки строк. А использование ChatGPT для написания регулярных выражений, особенно сложных, значительно сэкономит время.

📌 Остальные
Please open Telegram to view this post
VIEW IN TELEGRAM
🛡 VineShield

Средство обфускации всех исполняемых файлов и скриптов, написанных на python 3.

Github

@pro_python_code
Уроки Парсинга на Python Сравниваем Scrappy и bs4

🎞 Видео

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира: Python за неделю

Почитать:
Чтобы ускорить работу
Numba и кода NumPy, нужно понять, как работают процессоры
Python Ice Cream: Лучший способ отладки кода
Метаданные как обезбол при миграции
Полное руководство по использованию нескольких баз данных в Django
Пятифакторный тест личности — бот в Телеграм
Как правильно дифференцировать дискретные функции (Часть 2. Все-таки, МКЭ?)
Строим пайплайн в sсikit-learn — пошаговое руководство
Архитектурные нюансы OpenStack. Принципы работы компонентов Nova
Я скачал 1400+ пакетов, чтобы улучшить 1
Структура тестового фреймворка
Разработка RESTful API на Python с помощью HappyX
BI-аналитика на коленке: делаем веб-аналитику в DataLens
Курс проложит аналитик: проверьте, какими SQL-скилами вы экипированы
SRP: Refactoring the Data Science Beyond Classes
NumPy Tutorial #9: Array Join
Web3.py: Desenvolvendo app clientes para Ethereum com Python
MY NEW WEBSITE [Free AI image creator]
Android Operating System
Elastic D&D - Week 1 - Project Introduction
How to use Kaggle for Climate Change studies
Programmers need to learn "not to be the frog in the warm water"
scraping all airconditioned from the free market sales site
How To Install Private Git Hosted Dependencies Inside Docker Image Using SSH

Посмотреть:
🌐 Практика парсинга Python ( 05:27)
🌐 Уроки Парсинга на Python Сравниваем Scrappy и bs4 ( 10:06)
🌐 Большой гайд по парсингу на Python. Часть 3 Работаем с selenium ( 06:14)
🌐 Уроки Golang с нуля /#24 - Тесты ( 09:50)
🌐 Полный Гайд по парсингу на Python: от азов до продвинутых техниик,. Часть 1 ( 07:04)
🌐 Полный Гайд по парсингу на Python: Практика. Часть 2 ( 05:59)
🌐 Python для начинающих. Урок 9 | Работа со строками ( 15:13)
🌐 Задание 2 | ЕГЭ по информатике | ДЕМО-2024 ( 03:46)
🌐 Задание 1 | ЕГЭ по информатике | ДЕМО-2024 ( 02:50)
🌐 Полный разбор демоверсии | ОГЭ-2024 по информатике ( 00:00)
🌐 Новый оператор в Python для объединения словарей в один символ #shorts #python ( 01:00)

Хорошего дня!

@pro_python_code