🔥 Призы были высланы победителям, ну а фото мерча от победителя с 1-ого места мы получим в течении 14 дней (доставка)
Спасибо за участие и ждите новых евентов :)
Спасибо за участие и ждите новых евентов :)
❤🔥13🆒3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤2
Выводи данные как профи (String formatting)
➡️ Python предоставляет множество инструментов для быстрой и эффективной разработки. Однако многие из них остаются в тени. Одним из таких инструментов является форматирование строк, хорошее его понимание, сделает ваш код более читаемым, и быстрым в написании.
🧐 format - является встроенной функцией python, используется для форматирования и стилизации строк. Она принимает основной объект (число, строку и т.д.) и строку формата, определяющую, как именно следует представить объект. Примеры использования:
🙉 Ещё меньше кода? - Да.
Что делать когда вам нужно добавить отформатированные значения в шаблон текста? Для этого вы можете использовать f-strings. Просто укажите формат после «:»
😎 Ниже список часто используемых форматеров (изменяйте значения под себя):
🤓 Под капотом
Перечисленные методы (format и f-string) полагаются на дандер метод
Определив этот метод в вашем классе, вы сможете использовать форматирование:
❤️🔥 Внедрите эти методы в вашем проекте и будьте готовы к новым публикациям, чтобы активно развивать свои навыки разработчика
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
format(3.14159, ".2f")
> "3.14"
format(3, "04d")
> "0003"
format(3, "#06b")
> "0b0011"
Что делать когда вам нужно добавить отформатированные значения в шаблон текста? Для этого вы можете использовать f-strings. Просто укажите формат после «:»
f"pi ≈ {math.pi:.2f}"
> "pi ≈ 3.14"
name = "PyBytes"
f"Первые две буквы - {name:.2s}"
> "Первые две буквы - Py"
format("PyBytes", "_^11") # по центру
> "__PyBytes__"
format("PyBytes", "_<11") # по левому краю
> "PyBytes____"
format("PyBytes", "_>11") # по правому краю
> "____PyBytes"
format("PyBytes", ".2s") # обрезание
> "Py"
format(13.123, ".1f") # округление
> "13.1"
format(123123123, ",d") # большие числа
> "123,123,123"
Перечисленные методы (format и f-string) полагаются на дандер метод
__format__ Его даже можно вызвать на прямую:"PyBytes".__format__(".2s")
> "Py"
Определив этот метод в вашем классе, вы сможете использовать форматирование:
class A:
def __format__(self, form):
return form
a = A()
f"`А` это `{a:эхо форматер}`"
> "`А` это `эхо форматер`"
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤6❤🔥2
Требования к знаниям:
Оклад будет оговорен в зависимости от уровня навыков специалиста, а также будет предложена система PoW
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🏆1
Разнится между "is" и "=="
ℹ️ В Python есть два основных оператора равенства. Иметь представление о разнице их применения и работы - критически важно. В будущем - это сэкономит вам не один час при поиске бага.
🔗 Все ваши переменные, классы, функции, и т.д. находятся где то в памяти компьютера. Оператор сравнения
🟰 Любой объект в python содержит информацию. Это могут быть как атрибуты добавленные программистом, так и скрытые данные от самого python. Оператор равенства == проверяет, что бы два объекта содержали одну и ту же информацию.
🤨 dict всегда ссылается на один и тот же класс в памяти, поэтому мы получаем True.
🤨 При вызове класса dict, мы получаем новый экземпляр класса dict. Python создает наш экземпляр в новом отделе памяти, по этому 2 разных экземпляра не являются одним и тем же.
🤨 Оба экземпляра класса dict пустые и не содержат разнящихся данных, так что мы получаем True.
❤️🔥 Ожидайте новых постов
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
_________ is _________
is проверяет, что бы два объекта ссылались на один и тот же адрес памяти. Другими словами, вы проверяете что бы ваши объекты являлись одним и тем же.
_________ == _________
dict is dict
> True
dict() is dict()
> False
dict() == dict()
> True
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🗿2❤1
❤6🌚2
Какую тему вы бы хотели разобрать?
Final Results
39%
Дандер методы
41%
Интерфейсы с помощью `abc`
43%
Генераторы и Итераторы
34%
Аннотации типов - зачем?
Эффективность в каждой строке (Итераторы и Генераторы)
➡️ Python предоставляет мощные инструменты для работы с данными - итераторы и генераторы. Они оптимизируют использование памяти и упрощают код.
🧐 Итераторы - это объекты, обеспечивающие проход по элементам коллекции по одному за раз. Метод
🙉 Генераторы - это упрощенные итераторы, создаваемые с помощью функций и выражений. Когда вы вызываете генератор, Python возвращает объект-итератор. Каждый вызов функции
🥰 Используйте эти концепции для создания более оптимизированного и чистого кода.
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
__iter__() вызывается для создания итератора, а __next__() - для доступа к следующему элементу. При достижении конца коллекции, __next__() вызывает исключение StopIteration (Эта ошибка автоматически обрабатывается такими конструкциями как for).my_list = [1, 2, 3]
iterator = iter(my_list) # __iter__() вызывается здесь
print(next(iterator)) # __next__() вызывается здесь
next() для этого итератора возобновляет выполнение функции-генератора с того места, где было последнее слово yield, и продолжается до следующего.def my_generator(n):
for i in range(n):
yield i ** 3
gen = my_generator(3) # Возвращает итератор
print(next(gen)) # Возобновляет выполнение до следующего yield
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3😈2
Требования к знаниям:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🍾1
Что возвращает функция `super()` в Python?
Final Results
61%
родительский класс
14%
прокси-объект
11%
класс в котором есть нужный мне метод
14%
черная магия меня не интересует🫸
❤5
Управление ресурсами (
ℹ️ Python предоставляет уникальный инструмент для эффективного управления ресурсами, который часто недооценивают. Это оператор
➡️
> Файл автоматически закроется после выхода из блока
😎 Зачем это нужно? - Использование
😱 Под капотом -
> Вывод:
> Resource is acquired.
> Using the resource.
> Resource is released.
❤️🔥 Интегрируйте эту практику в свои проекты для более чистого, безопасного и эффективного управления ресурсами.
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
with в Python)with, который обеспечивает правильное управление ресурсами, такими как файлы, сетевые соединения и блокировки.with используется для оборачивания выполнения блока кода. Основное преимущество использования with заключается в том, что он гарантирует освобождение ресурсов после использования. Примеры:with open('file.txt', 'r') as file:
data = file.read()
> Файл автоматически закроется после выхода из блока
with.with позволяет избежать распространенных ошибок, таких как утечка ресурсов или их неправильное закрытие, особенно при возникновении исключений.with работает с объектами, которые поддерживают контекстное управление. Это означает, что объект должен иметь методы __enter__ и __exit__. В методе __enter__ обычно происходит инициализация ресурса, а в __exit__ - его освобождение.class ManagedResource:
def __enter__(self):
print("Resource is acquired.")
return self
def __exit__(self, exc_type, exc_value, traceback):
print("Resource is released.")
with ManagedResource() as resource:
print("Using the resource.")
> Вывод:
> Resource is acquired.
> Using the resource.
> Resource is released.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤1👍1
Что выведет данный код?
a, b = b[0] = [0, [0]] print(b)
a, b = b[0] = [0, [0]] print(b)
Anonymous Quiz
39%
IndexError
30%
[[0, [0]]]
22%
RuntimeError
9%
[[0, [...]]]
🗿10❤3👍3
Типизация в Python
😈 В последние годы Python сделал большой шаг вперёд, предоставив программистам возможность использовать аннотации типов. Это нововведение значительно упрощает жизнь разработчиков, делая код более читаемым и безопасным.
Примеры использования:
> Мы уточняем что функция принимает и возвращает строку
>
> В этом словаре все ключи это строки, а значения - числа с плавающей запятой
🔍 Преимущества аннотаций типов:
— Повышение читаемости кода
— Упрощение отладки
— Интеграция с инструментами статического анализа (Например MyPy)
🧑💻 Интеграция с современными библиотеками:
Аннотации типов отлично сочетаются с такими библиотеками, как Pydantic, которые используют типизацию для валидации данных и создания моделей данных с автоматическими проверками типов.
❗️ Важно помнить:
Аннотации типов — это не более чем подсказки для разработчиков и инструментов статического анализа. Они не влияют на выполнение вашего кода, но служат мощным инструментом для предотвращения ошибок и улучшения качества кода.
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
Примеры использования:
def greet(name: str) -> str:
return f"Привет, {name}!"
> Мы уточняем что функция принимает и возвращает строку
tasks: list[str] = ["python", "PyBytes"]
>
tasks должен содержать только строкиconfiguration: dict[str, float] = {"volume": 0.5, "brightness": 0.8}> В этом словаре все ключи это строки, а значения - числа с плавающей запятой
🔍 Преимущества аннотаций типов:
— Повышение читаемости кода
— Упрощение отладки
— Интеграция с инструментами статического анализа (Например MyPy)
Аннотации типов отлично сочетаются с такими библиотеками, как Pydantic, которые используют типизацию для валидации данных и создания моделей данных с автоматическими проверками типов.
Аннотации типов — это не более чем подсказки для разработчиков и инструментов статического анализа. Они не влияют на выполнение вашего кода, но служат мощным инструментом для предотвращения ошибок и улучшения качества кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🌭2
❤3
Погружаемся в True, False и None в Python
📈 Python обладает тремя основными объектами, играющими ключевую роль в логике и управлении потоком программ: True, False и None.
- True и False являются экземплярами ти
😱 Создание подклассов для bool запрещено, чтобы обеспечить чистоту и пред
➡️ Взгляд на None и NoneType
😠 Каждая функция в Python, котора
😎 Понимание
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
- True и False являются экземплярами ти
па bool, который, в свою очередь, является подклассом int. Это означает, что они могут участвовать в математических выражениях как 1 и 0.
# Пример с математикой
результат = True + False # будет 1
сказуемость кода.
None — это единственный экземпляр NoneType и представляет собой синглтон, указывающий на отсутствие значения. Эта особенность позволяет использовать None в качестве уникального индикатора "пустоты" или "ничего".
# Демонстрация None
a = None
print(a is None) # Выведет True
я не имеет явного return, по умолчанию возвращает None. Это важно для понимания поведения функций, которые не предназначены для возвращения значения.
def test_func():
pass
print(test_func() is None) # Выведет True
True, False и None необходимо для осознания логических операций и управления потоком в Python, что делает код более чистым и интуитивно понятным.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4💋3
Итераторы и генераторы [Часть 2]
💃 В повседневной работе мы часто сталкиваемся с генераторами, даже не задумываясь об этом. Например, функция range() в Python - это классический генератор, который позволяет эффективно генерировать последовательность чисел.
🛠 Вместо того, чтобы создавать списки, попробуйте использовать генераторы для обработки данных. Генераторы занимают меньше памяти и работают быстрее, так как обрабатывают элементы последовательно.
🔄 Один из продвинутых инструментов генераторов - метод send(), который позволяет отправлять значение обратно в генератор. Это открывает возможности для интерактивного взаимодействия с генератором.
📊 Сравнение производительности: В изображении вы найдете бенчмарк, демонстрирующий разницу в производительности между простой функцией с использованием генератора и без него.
😴 Генераторы - мощный инструмент для эффективной работы с данными. Используйте их, чтобы сэкономить память и время выполнения программ.
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
for i in range(5):
print(i)
# Список
numbers_list = [x * 2 for x in range(10)]
# Генератор
numbers_gen = (x * 2 for x in range(10))
def counter():
n = 0
while True:
received = yield n
if received is not None:
n = received
else:
n += 1
gen = counter()
print(next(gen))
> 0
print(gen.send(10))
> 10
print(next(gen))
> 11
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥2
😈3🌭2
Оператор "Морж" (Walrus Operator)
💃 Оператор "Морж" (`:=`), введённый в Python 3.8, представляет собой мощный инструмент для сокращения кода и улучшения его читаемости. Этот оператор позволяет назначать значения переменным внутри выражений, что особенно полезно в условиях, циклах и списках.
💡 Рассмотрим пример использования в условии. Вместо того, чтобы вызывать функцию дважды для проверки и получения значения, можно сделать это один раз:
🔄 Этот оператор также идеально подходит для циклов, позволяя упростить код при работе с итераторами:
✏️ В списковых включениях оператор "Морж" может быть использован для фильтрации элементов без необходимости повторного вычисления:
🔍 Для демонстрации более сложного применения, давайте рассмотрим использование в условной логике с множественными
📊 Оператор "Морж" значительно упрощает код, делая его не только короче, но и более читаемым. Используйте его, чтобы сделать свои программы более эффективными и понятными.
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
if (n := len(a)) > 10:
print(f"Список слишком длинный, {n} элементов")
while (line := input("Введите что-нибудь: ")) != "стоп":
print(f"Вы ввели {line}")
numbers = [0, 1, 2, 3, 4]
squared_even_numbers = [n2 for n in numbers if (n2 := n ** 2) % 2 == 0]
if/elif (картинка "code 1").Please open Telegram to view this post
VIEW IN TELEGRAM
❤5❤🔥3
Dataclasses [Часть 1]
😈 Введение в dataclasses: Python предлагает мощный механизм для упрощения работы с классами данных - модуль
👆 В этом примере мы определили класс
💡 Почему это важно? Использование
😳Давайте рассмотрим подробнее, как создать экземпляр класса
📌 В результате мы получаем экземпляр класса
❤️🔥 Dataclasses представляют собой мощный инструмент для работы с данными в Python, облегчающий создание классов для хранения данных без необходимости писать многословный код.
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
😈 Введение в dataclasses: Python предлагает мощный механизм для упрощения работы с классами данных - модуль
dataclasses. Этот инструмент позволяет автоматически добавлять специальные методы в классы: __init__, __repr__, __eq__, и другие, основываясь на аннотациях типов полей класса.
from dataclasses import dataclass
⠀
@dataclass
class Point:
⠀⠀x: int
⠀⠀y: int
👆 В этом примере мы определили класс
Point с помощью декоратора @dataclass, который автоматически добавляет методы __init__ и __repr__, упрощая создание экземпляров и их отображение.💡 Почему это важно? Использование
dataclasses позволяет сократить количество шаблонного кода, улучшить читаемость и сделать код более декларативным. Вы определяете структуру данных, а Python заботится о реализации методов.😳Давайте рассмотрим подробнее, как создать экземпляр класса
Point и какие методы автоматически генерируются:
point = Point(10, 20)
print(point)
Point, который можно легко выводить на печать, благодаря автоматически сгенерированному методу __repr__.❤️🔥 Dataclasses представляют собой мощный инструмент для работы с данными в Python, облегчающий создание классов для хранения данных без необходимости писать многословный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥3😈1🆒1
Введение в магические методы [Часть 1]
🧙♀️ Магические методы в Python, часто называемые "dunder" методами (от "double underscore"), играют ключевую роль в реализации внутреннего поведения объектов. Их название всегда начинается и заканчивается двумя символами подчеркивания. Например,
🍀 Примером магического метода, который мы используем ежедневно, является init, позволяющий определить начальное состояние объекта.
👌 Другой интересный пример - str и repr которые определяют, как объект будет представлен в строковом формате. Это особенно полезно для отладки и логирования.
💼 Магические методы также позволяют объектам вести себя как коллекции или изменять их поведение при выполнении арифметических операций. Например, getitem позволяет обращаться к элементам коллекции с использованием синтаксиса
🫸 Использование магических методов позволяет разработчикам создавать гибкие и интуитивно понятные интерфейсы для своих классов, облегчая работу с объектами и повышая читаемость кода.
🔝 PyBytes Media | ✉ Telegram / 📷 Instagram / 📈 Mentor Service
__init__ для инициализации объектов.class Book:
⠀⠀def __init__(self, title, author):
⠀⠀⠀⠀self.title = title
⠀⠀⠀⠀self.author = author
⠀⠀def __str__(self):
⠀⠀⠀⠀return f"{self.title} by {self.author}"
⠀⠀def __repr__(self):
⠀⠀⠀⠀return f"Book({self.title!r}, {self.author!r})"
obj[key].Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1