В этом гайде разработаем фичу для пиццерии, благодаря которой клиенты смогут создавать авторские пиццы с теми ингредиентами, которые им нужны.
В посте мы рассмотрим:
• Миксины — позволяют добавлять функционал через наследование, рассмотрим тонкие моменты.
• Наследование — используем super() для инициализации атрибутов базового класса пиццы.
• MRO — затронем правила разрешения методов.
🔥 — если узнал новое
🤝 — если уже создавал подобное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82👍19🤝14👎4❤1
Минимум слов и максимум практики: напишем код, который генерирует qr-код из ссылки или текста, импортируем либу:
import qrcode
Конвертировать будем ссылку:
link_to_convert = 'https://goo.su/4V2zG'
Настроим будущий qr-код, чем больше версия, тем больше данных можно закодировать:
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10, #размер каждого квадратика в QR-коде в px
border=4,
)
Более высокий уровень
error_correction
позволяет QR-у оставаться читаемым при повреждении или частичном закрытии, но также увеличивается его размер. Добавим данные и сгенерируем QR-код:qr.add_data(link_to_convert)
qr.make(fit=True) # автоматически определяет размер QR-кода
Теперь сгенерируем изображение QR-кода и сохраним его:
img = qr.make_image(fill_color="black", back_color="white")
img.save("meme.png")
img.show()
В комментариях оставил QR-код, сгенерированный этим скриптом, можете глянуть.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39👍24
Вспоминаем ключевые слова для определения структур, работы с областями видимости, управления потоком выполнения, обработки исключений и отладки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍58🔥18🤝5❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Stepik — это обучающая платформа, которая предоставляет онлайн-курсы и интерактивные задания по программированию
📌 Ссылочка: stepik.org
👉 Python Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40🔥11👎4❤1
•
insert()
— позволяет добавлять в список новые элементы. Фишка этого метода в том, что можно указать индекс, куда необходимо сделать вставку элемента в списке.•
append()
— самый популярный способ доставки элементов в конец выбранного списка. Простой и надежный метод.🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝82🔥48👍7❤2
В этой статье:
• Полиморфное вредоносное ПО
• Генерация вредоносного кода с ChatGPT
• Простенький keylogger
🔊 Продолжить читать можешь на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23😁9👍6👎1🤝1
👍22🔥9❤1
Каждая часть курса будет основываться на предыдущей, включать в себя все более сложные темы и большее погружение в программирование и язык python.
Ссылочка на плейлист: YouTube🖤
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤5👍5
А вы знаете как в питоне работает цикл for под капотом?
Для начала нужно понять, что такое итерируемый объект и итератор. Итерируемый объект — любой объект, элементы которого можно обойти в цикле, для этого у него должна быть реализация метода
Но цикл for работает не с самим объектом, а с его итератором, тк именно итератор имеет реализацию метода
Поэтому, когда вы передаете объект в цикл for, под капотом вызывается функция
Как это поможет на практике? Представьте, что вам нужно обработать большой файл. Вместо того, чтобы загружать весь файл в память сразу, вы можете использовать итератор, чтобы читать файл построчно.
🔥 В следующий раз создадим кастомный итератор и подробно рассмотрим реализацию методов
👉 Python Ready | #практика
Для начала нужно понять, что такое итерируемый объект и итератор. Итерируемый объект — любой объект, элементы которого можно обойти в цикле, для этого у него должна быть реализация метода
__iter__()
:nums = [24, 86, 17, 94]
print(nums.__iter__()) # <list_iterator object at 0x0...>
Но цикл for работает не с самим объектом, а с его итератором, тк именно итератор имеет реализацию метода
__next__()
, в котором описана логика перебора. Создадим итератор:nums_iterator = iter(nums)
print(next(nums_iterator)) # 24
print(next(nums_iterator)) # 86
Поэтому, когда вы передаете объект в цикл for, под капотом вызывается функция
iter()
, затем работает next()
до исключения StopIteration
:while True:
try:
print(next(nums_iterator))
except StopIteration:
break
Как это поможет на практике? Представьте, что вам нужно обработать большой файл. Вместо того, чтобы загружать весь файл в память сразу, вы можете использовать итератор, чтобы читать файл построчно.
🔥 В следующий раз создадим кастомный итератор и подробно рассмотрим реализацию методов
__iter__()
и __next__()
!Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44👍12❤5🤝5