#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Switch-конструкция с помощью словаря

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

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

switch = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y
}

В этом примере были использованы lambda-функции для простоты, но вместо них можете подставить любые другие. Для тех, кто не знает: lambda - объявление анонимной функции (можно косвенно сравнить с def); x, y - принимаемые аргументы; x + y - то, что функция возвращает.

result = switch['*'](4, 5)
print(result)
# Output: 20

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

Одиночка или же синглтон
– это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.

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

new__(cls, *args, **kwargs) –– вызывается для создания экземпляра класса, перед вызовом __init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).

class Singleton:
instance = None

def __new__(cls):
if cls.instance is None:
cls.instance = super().__new__(cls)

return cls.instance

Здесь мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.

То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти.

a = Singleton()
b = Singleton()

Создали два экземпляра, теперь убедимся, что они содержат одинаковый объект.

print(a is b) # True
Изменение списка во время итерации по нему

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

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