#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]
Аннотации типов

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

Для примера потребуется импортировать типы List (список) и Dict (словарь) из модуля typing:

from typing import List, Dict

Типы данных указывается через двоеточие после именно переменной после её создания. Создадим словарь с числами и сразу же список, состоящий из значений этого словаря:

numbers: Dict[str, int] = {'one': 1, 'two': 2}
values: List[int] = numbers.values()

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

def sum(a: int, b: int) -> int:
return a + b

Теперь используем эту функцию, передав туда распакованный список:

sum(*values)
# Output: 3

Однако помните, что аннотации типов не влияют на ход исполнения программы, поэтому в ранее написаную функцию мы с таким же успехом можем передать и строки, хотя указывали целочисленный типа данных:

sum('Python ', 'Lounge')
# Output: 'Python Lounge'
Реализация класса контекстного менеджера

Начнем с того, что в контекстном менеджере должны быть определены методы enter и exit. Давайте создадим наш собственный менеджер контекста для открытия файлов и поймем суть его работы.

class NewOpen(object):
   def __init__(self, file_name, mode):
       self.file = open(file_name, mode)
   def __enter__(self):
       return self.file
   def __exit__(self, type, value, traceback):
       self.file.close()


Просто определив методы enter и exit, мы можем использовать наш новый класс с оператором with. Давайте попробуем:

with NewOpen('test.txt', 'w') as file:
   file.write('Hello, world!')

Наш метод exit принимает три аргумента. Они требуются для каждого метода exit, который является частью класса.

# test
Forwarded from Python Academy
Дробные числа

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

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

Поэтому для идеальных вычислений лучше использовать Fraction, который представляет и хранит число в виде рациональной дроби.

#числа #fraction
Forwarded from # pip install (Student B.)
Знакома ли вам ситуация, когда программа Python должна выполняться не сразу? В большинстве случаев требуется, чтобы код запускался как можно скорее. Однако порой перед работой оптимальнее будет дать программе немного поспать.

🎯 Telegram Чат: @python_scripts
🎯 Канал: @pip_install

Содержание статьи
1. Вызов sleep() через time.sleep()
2. Вызов sleep() с декораторами
3. Вызов sleep() в потоках
4. Использование time.sleep() в threading
5. Использование Event.wait() в многопоточности Python
6. Вызов sleep() в Async IO
7. Вызов sleep() в Tkinter и wxPython
8. Метод after() — Погружение в сон для Tkinter
9. Метод CallLater() — Погружение в сон для wxPython Python

Подробнее: https://python-scripts.com/sleep
Forwarded from # pip install (Student B.)
🔥 Как хешировать пароли в Python?

В данном руководстве будет разобрано использование PBKDF2_HMAC для шифрования паролей вместе с солью в Python.

🎯 Telegram Чат: @python_scripts

Содержание статьи:
1. Зачем нужно хешировать пароли?
2. Почему не стоит использовать SHA-256 или нечто похожее
3. Хеширование паролей с pbkdf2_hmac
4. Генерация соли в Python
5. Хеширование в Python
6. Хранение хеша и соли
7. Проверка правильности пароля в Python
8. Пример регистрации пользователя с проверкой пароля

Подробнее: https://python-scripts.com/haslib-pbkdf2-check-password
Forwarded from # pip install (Student B.)
🔵 Scrapy — Простой веб скрапинг
Наш чат: @python_scripts

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

Главное отличие между Scrapy и другими популярными библиотеками, такими как Requests или BeautifulSoup, заключается в том, что он позволяет решать обычные задачи веб скрапинга при помощи самых элегантных методов.

Подробнее: https://python-scripts.com/scrapy-example
Forwarded from # pip install (Student B.)
Сортировка списков в Python: list.sort() против sorted(list)
🎯 Telegram Чат: @python_scripts

Многие разработчики задаются вопросом, какой метод сортировки списка более эффективен — использование встроенной функции sorted() или задействование метода list.sort().

Подробнее: https://python-scripts.com/sort-list
Forwarded from # pip install (Student B.)
🔥 Определяем возраст и пол человека используя нейронную сеть
💬 Можно тестировать код сразу в статье!

Если вам интересны такие темы и вы хотите и дальше видеть новые публикации и развитие данного модуля, то просим вас поставить нам звездочку ⭐️ на Github!

Модуль: https://github.com/mowshon/age-and-gender

🎯 Telegram Чат: @python_scripts
🎯 Канал: @pip_install

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

Подробнее: https://python-scripts.com/predict-age-and-gender
Forwarded from # pip install (Student B.) via @like
🤔 Go или Python — Что выбрать?

В то время как Python остается фаворитом сообщества, удерживая второе место в первом квартале 2019 года за самый быстрый язык программирования на GitHub по количеству запросов (+ 17%), Golang не так уж сильно отстает и крепко держится на четвертом месте (+ 8%). Выбор между Golang и Python становится еще более размытым.

🎯 Telegram Чат: @python_scripts
🎯 Канал: @pip_install

Подробный разбор языков: https://python-scripts.com/golang-vs-python

Что выберите вы? Голосование внизу!
Forwarded from # pip install (Student B.)
🔥 Мы в поиске начальника!
Помоги нам в создании бесплатного обучающего контента для всего нашего сообщества!

❤️ Стань нашим начальником тут: https://www.patreon.com/python_community?fan_landing=true

Над чем мы работаем?
- Новые актуальные статьи на сложные темы
- Перевод популярных книг на русский язык
- Перевод документации популярных модулей

Чат для обсуждения: @python_scripts

Подробнее: https://www.youtube.com/watch?v=pi8Tt-YdT6E
Forwarded from # pip install (Student B.)
Хочешь изучить один из самых востребованных языков программирования Python?

Запишись на онлайн курс «Профессия Python-разработчик». Получи быстрый старт и практику кодинга. Освой востребованную, высокооплачиваемую профессию за двенадцать месяцев. Создай искусственный интеллект на дипломе!
👉 Все подробности по ссылке: https://clc.am/Pn4k8Q

Чему научишься:
⚡️ создавать простые и сложные модульные программы: от консольных скриптов до чат-ботов;
⚡️ работать с базами данных;
⚡️ использовать промышленные средства разработки: Git, PyCharm;
⚡️ тестировать код;
⚡️ понимать место Django в семействе веб-фреймворков;
⚡️ оптимизировать старые и/или неудачные веб-приложения.

Бонус : 2 месяца бесплатно английского в онлайн школе «EnglishDom»

Успей забрать курс со скидкой 40%!
Подробности по ссылке: https://clc.am/Pn4k8Q
Forwarded from Youtube Audio Download
👨‍🚀 Request processing:

👀 You're the first who asks this video. Working...
Audio is downloading

💁‍♂️ Tip: You can search for videos directly in the bot. Type @vid and then the name of the video. Read more - /vid_demo
Tips & Tricks. Генераторы в Python и их отличие от списков и функций

Разбираем генераторные выражения и разницу между списками и генераторами, а также между функциями и генераторами.

Читать статью

#генераторы #списки
Топ. Введение в объектно-ориентированное программирование

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

Читать статью

#модули #ооп
Django. 6 руководств по Django для начинающих

Хотите усовершенствовать недавно приобретенные навыки работы с Django? Мы нашли для вас отличные туториалы!

Читать статью

#django
Модуль collections
#Python

Модуль collections - предоставляет специализированные типы данных, на основе словарей, кортежей, множеств, списков.
Первым рассматриваемым типом данных будет Counter.
collections.Counter
collections.Counter - вид словаря, который позволяет нам считать количество неизменяемых объектов (в большинстве случаев, строк). Пример: