Forwarded from Python Lounge: работа и стажировки для программистов
Switch-конструкция с помощью словаря
К сожалению, в Python не существует switch-конструкций, в отличие от большинства других языков программирования, и поэтому приходится строить башни из условных операторов в своём коде.
Однако есть одно хитрое решение — использовать словарь, где значениями будут функции. Например, напишем словарь, который будет использован для математических операторов.
В этом примере были использованы lambda-функции для простоты, но вместо них можете подставить любые другие. Для тех, кто не знает: lambda - объявление анонимной функции (можно косвенно сравнить с def); x, y - принимаемые аргументы; x + y - то, что функция возвращает.
Примерно вот так мы можем пользоваться подобной штукой. Думаю, что многие найдут полезное применение подобному использованию словарей.
К сожалению, в 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
Примерно вот так мы можем пользоваться подобной штукой. Думаю, что многие найдут полезное применение подобному использованию словарей.
Forwarded from Python Lounge: работа и стажировки для программистов
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Итак, нам требуется такой класс, который будет при вызове возвращать один и тот же экземпляр, поэтому нам придется переопределить магический метод new.
new__(cls, *args, **kwargs) –– вызывается для создания экземпляра класса, перед вызовом __init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).
То есть при вызове конструктора класса 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
Forwarded from Python Lounge: работа и стажировки для программистов
Изменение списка во время итерации по нему
Предположим, что требуется удалить все нечетные числа из списка. Проблема со следующим кодом должна быть довольно очевидной:
Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.
К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода. Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решения подобных проблем, что и показывает реализация кода ниже:
Предположим, что требуется удалить все нечетные числа из списка. Проблема со следующим кодом должна быть довольно очевидной:
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 Lounge: работа и стажировки для программистов
Аннотации типов
Всем известно, что Python – язык с динамической типизацией. Аннотации типов нужны для того, чтобы повысить информативность исходного кода, но они никак не влияют на поведение программы.
Для примера потребуется импортировать типы
Типы данных указывается через двоеточие после именно переменной после её создания. Создадим словарь с числами и сразу же список, состоящий из значений этого словаря:
Потом создадим функцию, возвращающую сумму переданных значений. В аргументах точно так же можно указывать их типы, а также через стрелочку можно указать типа возвращаемого значения:
Теперь используем эту функцию, передав туда распакованный список:
Однако помните, что аннотации типов не влияют на ход исполнения программы, поэтому в ранее написаную функцию мы с таким же успехом можем передать и строки, хотя указывали целочисленный типа данных:
Всем известно, что 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'
Forwarded from Python Lounge: работа и стажировки для программистов
Реализация класса контекстного менеджера
Начнем с того, что в контекстном менеджере должны быть определены методы enter и exit. Давайте создадим наш собственный менеджер контекста для открытия файлов и поймем суть его работы.
Просто определив методы enter и exit, мы можем использовать наш новый класс с оператором
Наш метод exit принимает три аргумента. Они требуются для каждого метода exit, который является частью класса.
# test
Начнем с того, что в контекстном менеджере должны быть определены методы 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
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
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
🎯 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
В данном руководстве будет разобрано использование 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
Наш чат: @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
🎯 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
💬 Можно тестировать код сразу в статье!
Если вам интересны такие темы и вы хотите и дальше видеть новые публикации и развитие данного модуля, то просим вас поставить нам звездочку ⭐️ на Github!
✅ Модуль: https://github.com/mowshon/age-and-gender
🎯 Telegram Чат: @python_scripts
🎯 Канал: @pip_install
У нас была задача отсортировать профили людей по возрасту и полу. Нам нужно было сегментировать базу потенциальных клиентов для запуска тестовых рекламных компаний.
Подробнее: https://python-scripts.com/predict-age-and-gender
🤔 Go или Python — Что выбрать?
В то время как Python остается фаворитом сообщества, удерживая второе место в первом квартале 2019 года за самый быстрый язык программирования на GitHub по количеству запросов (+ 17%), Golang не так уж сильно отстает и крепко держится на четвертом месте (+ 8%). Выбор между Golang и Python становится еще более размытым.
🎯 Telegram Чат: @python_scripts
🎯 Канал: @pip_install
Подробный разбор языков: https://python-scripts.com/golang-vs-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
Помоги нам в создании бесплатного обучающего контента для всего нашего сообщества!
❤️ Стань нашим начальником тут: https://www.patreon.com/python_community?fan_landing=true
Над чем мы работаем?
- Новые актуальные статьи на сложные темы
- Перевод популярных книг на русский язык
- Перевод документации популярных модулей
Чат для обсуждения: @python_scripts
Подробнее: https://www.youtube.com/watch?v=pi8Tt-YdT6E
Patreon
Get more from Python Community on Patreon
creating books and articles
Forwarded from # pip install (Student B.)
Хочешь изучить один из самых востребованных языков программирования Python?
Запишись на онлайн курс «Профессия Python-разработчик». Получи быстрый старт и практику кодинга. Освой востребованную, высокооплачиваемую профессию за двенадцать месяцев. Создай искусственный интеллект на дипломе!
👉 Все подробности по ссылке: https://clc.am/Pn4k8Q
Чему научишься:
⚡️ создавать простые и сложные модульные программы: от консольных скриптов до чат-ботов;
⚡️ работать с базами данных;
⚡️ использовать промышленные средства разработки: Git, PyCharm;
⚡️ тестировать код;
⚡️ понимать место Django в семействе веб-фреймворков;
⚡️ оптимизировать старые и/или неудачные веб-приложения.
Бонус : 2 месяца бесплатно английского в онлайн школе «EnglishDom»
Успей забрать курс со скидкой 40%!
Подробности по ссылке: https://clc.am/Pn4k8Q
Запишись на онлайн курс «Профессия Python-разработчик». Получи быстрый старт и практику кодинга. Освой востребованную, высокооплачиваемую профессию за двенадцать месяцев. Создай искусственный интеллект на дипломе!
👉 Все подробности по ссылке: https://clc.am/Pn4k8Q
Чему научишься:
⚡️ создавать простые и сложные модульные программы: от консольных скриптов до чат-ботов;
⚡️ работать с базами данных;
⚡️ использовать промышленные средства разработки: Git, PyCharm;
⚡️ тестировать код;
⚡️ понимать место Django в семействе веб-фреймворков;
⚡️ оптимизировать старые и/или неудачные веб-приложения.
Бонус : 2 месяца бесплатно английского в онлайн школе «EnglishDom»
Успей забрать курс со скидкой 40%!
Подробности по ссылке: https://clc.am/Pn4k8Q
Forwarded from Николай Крупий
YouTube
Лёгкое логирование в Python с Loguru. Замена встроенной библиотеке logging
Мой курс «Хардкорная веб-разработка» — https://course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
Telegram: https://t0digital.t.me
Сказать спасибо за это видео можно здесь — https://boosty.to/digitalize.team…
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
Telegram: https://t0digital.t.me
Сказать спасибо за это видео можно здесь — https://boosty.to/digitalize.team…
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
👀 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
Forwarded from Библиотека питониста | Python, Django, Flask
lwn.net
Python 3.9 is around the corner
Python
3.9.0rc2 was released on September 17, with the final version scheduled
for October 5, roughly a year after the release of Python 3.8. Python 3.9
will come with new operators for dictionary unions, a new parser, two string
operations meant…
3.9.0rc2 was released on September 17, with the final version scheduled
for October 5, roughly a year after the release of Python 3.8. Python 3.9
will come with new operators for dictionary unions, a new parser, two string
operations meant…
Forwarded from Pythonist.ru - образование по питону
Tips & Tricks. Генераторы в Python и их отличие от списков и функций
Разбираем генераторные выражения и разницу между списками и генераторами, а также между функциями и генераторами.
Читать статью
#генераторы #списки
Разбираем генераторные выражения и разницу между списками и генераторами, а также между функциями и генераторами.
Читать статью
#генераторы #списки
Forwarded from Pythonist.ru - образование по питону
Топ. Введение в объектно-ориентированное программирование
Цикл статей, посвященный изучению ООП. Учиться будем на примере: мы создадим мир клякс, которые будут взаимодействовать между собой.
Читать статью
#модули #ооп
Цикл статей, посвященный изучению ООП. Учиться будем на примере: мы создадим мир клякс, которые будут взаимодействовать между собой.
Читать статью
#модули #ооп
Forwarded from Pythonist.ru - образование по питону
Django. 6 руководств по Django для начинающих
Хотите усовершенствовать недавно приобретенные навыки работы с Django? Мы нашли для вас отличные туториалы!
Читать статью
#django
Хотите усовершенствовать недавно приобретенные навыки работы с Django? Мы нашли для вас отличные туториалы!
Читать статью
#django