ITDEAL
1.11K subscribers
749 photos
108 videos
11 files
572 links
Разработка комплексных IT решений для бизнеса и частных заказчиков.

Чат: @pybytes_chat

Founder: @lunasantrope
Download Telegram
➡️ User ID победителей:

1️⃣ 1963756461
2️⃣ 710580176
3️⃣ 6418039524

Скидывайте подтверждения из @userinfobot
Please open Telegram to view this post
VIEW IN TELEGRAM
ITDEAL
➡️ User ID победителей: 1️⃣ 1963756461 2️⃣ 710580176 3️⃣ 6418039524 Скидывайте подтверждения из @userinfobot
➡️ Для получения призов владельцы с этими USER_ID должны написать мне в DM: @lunasantrope
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Призы были высланы победителям, ну а фото мерча от победителя с 1-ого места мы получим в течении 14 дней (доставка)

Спасибо за участие и ждите новых евентов :)
❤‍🔥13🆒3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
➡️ Почему Chat GPT стал так резко популярен?


🔝 PyBytes Media | Telegram / 📷 Instagram / 📈Mentor Service
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥92
Выводи данные как профи (String formatting)


➡️Python предоставляет множество инструментов для быстрой и эффективной разработки. Однако многие из них остаются в тени. Одним из таких инструментов является форматирование строк, хорошее его понимание, сделает ваш код более читаемым, и быстрым в написании.

🧐 format - является встроенной функцией python, используется для форматирования и стилизации строк. Она принимает основной объект (число, строку и т.д.) и строку формата, определяющую, как именно следует представить объект. Примеры использования:

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:эхо форматер}`"
> "`А` это `эхо форматер`"


❤️‍🔥Внедрите эти методы в вашем проекте и будьте готовы к новым публикациям, чтобы активно развивать свои навыки разработчика

🔝 PyBytes Media | Telegram / 📷 Instagram / 📈Mentor Service
Please open Telegram to view this post
VIEW IN TELEGRAM
👍106❤‍🔥2
🚀 Ищем Разработчика!


👨‍💼 Специалист по разработке ПО, который знает Python. Нас инетресует Middle специалист.


Требования к знаниям:
➡️ Python 3.9+
➡️ aiogram 3.0
➡️ asyncio
➡️ aiohttp
➡️ postgresql
➡️ docker
➡️ docker compose
➡️ SQL / noSQL
➡️ sqlalchemy
➡️ alembic
➡️ typing
➡️ Портфолио
➡️ 18+
➡️ ООП
➡️ Коммуникабельность
➡️ Умение работать в команде
➡️ Ответственность
➡️ Умение воспринимать большие нагрузки


Оклад будет оговорен в зависимости от уровня навыков специалиста, а также будет предложена система PoW

🤖 Контакты @lunasantrope
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🏆1
🐱 Эфиииир: CLICK
Please open Telegram to view this post
VIEW IN TELEGRAM
😨4
Разнится между "is" и "=="

ℹ️В Python есть два основных оператора равенства. Иметь представление о разнице их применения и работы - критически важно. В будущем - это сэкономит вам не один час при поиске бага.


_________ is _________


🔗Все ваши переменные, классы, функции, и т.д. находятся где то в памяти компьютера. Оператор сравнения is проверяет, что бы два объекта ссылались на один и тот же адрес памяти. Другими словами, вы проверяете что бы ваши объекты являлись одним и тем же.


_________ == _________


🟰Любой объект в python содержит информацию. Это могут быть как атрибуты добавленные программистом, так и скрытые данные от самого python. Оператор равенства == проверяет, что бы два объекта содержали одну и ту же информацию.


dict is dict
> True

🤨 dict всегда ссылается на один и тот же класс в памяти, поэтому мы получаем True.


dict() is dict()
> False

🤨 При вызове класса dict, мы получаем новый экземпляр класса dict. Python создает наш экземпляр в новом отделе памяти, по этому 2 разных экземпляра не являются одним и тем же.

dict() == dict()
> True

🤨 Оба экземпляра класса dict пустые и не содержат разнящихся данных, так что мы получаем True.


❤️‍🔥Ожидайте новых постов

🔝 PyBytes Media | Telegram / 📷 Instagram / 📈Mentor Service
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🗿21
QUIZ: Что выдаст данный код?

print(10 is 10)
Anonymous Quiz
82%
True
18%
False
6🌚2
Эффективность в каждой строке (Итераторы и Генераторы)


➡️Python предоставляет мощные инструменты для работы с данными - итераторы и генераторы. Они оптимизируют использование памяти и упрощают код.


🧐Итераторы - это объекты, обеспечивающие проход по элементам коллекции по одному за раз. Метод __iter__() вызывается для создания итератора, а __next__() - для доступа к следующему элементу. При достижении конца коллекции, __next__() вызывает исключение StopIteration (Эта ошибка автоматически обрабатывается такими конструкциями как for).

my_list = [1, 2, 3]
iterator = iter(my_list) # __iter__() вызывается здесь
print(next(iterator)) # __next__() вызывается здесь


🙉Генераторы - это упрощенные итераторы, создаваемые с помощью функций и выражений. Когда вы вызываете генератор, Python возвращает объект-итератор. Каждый вызов функции next() для этого итератора возобновляет выполнение функции-генератора с того места, где было последнее слово yield, и продолжается до следующего.

def my_generator(n):
for i in range(n):
yield i ** 3

gen = my_generator(3) # Возвращает итератор
print(next(gen)) # Возобновляет выполнение до следующего yield


🥰Используйте эти концепции для создания более оптимизированного и чистого кода.


🔝 PyBytes Media | Telegram / 📷 Instagram / 📈Mentor Service
Please open Telegram to view this post
VIEW IN TELEGRAM
3😈2
🚀 Ищем Разработчика!


👨‍💼 Специалист по разработке ПО, который знает Python. Нас инетресует Middle специалист.


Требования к знаниям:
➡️ Python 3.9+
➡️ aiogram 3.0
➡️ asyncio
➡️ aiohttp
➡️ postgresql
➡️ docker
➡️ docker compose
➡️ SQL / noSQL
➡️ sqlalchemy
➡️ alembic
➡️ typing
➡️ Портфолио
➡️ 18+
➡️ ООП
➡️ Коммуникабельность
➡️ Умение работать в команде
➡️ Ответственность
➡️ Умение воспринимать большие нагрузки


👨‍💼 Оклад от 800$ и выше


🤖 Контакты @lunasantrope
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🍾1
Управление ресурсами (with в Python)

ℹ️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.

❤️‍🔥Интегрируйте эту практику в свои проекты для более чистого, безопасного и эффективного управления ресурсами.

🔝 PyBytes Media | Telegram / 📷 Instagram / 📈Mentor Service
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥101👍1
Что выведет данный код?

a, b = b[0] = [0, [0]] print(b)
Anonymous Quiz
39%
IndexError
30%
[[0, [0]]]
22%
RuntimeError
9%
[[0, [...]]]
🗿103👍3
Типизация в Python

😈 В последние годы Python сделал большой шаг вперёд, предоставив программистам возможность использовать аннотации типов. Это нововведение значительно упрощает жизнь разработчиков, делая код более читаемым и безопасным.

Примеры использования:

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, которые используют типизацию для валидации данных и создания моделей данных с автоматическими проверками типов.


❗️Важно помнить:
Аннотации типов — это не более чем подсказки для разработчиков и инструментов статического анализа. Они не влияют на выполнение вашего кода, но служат мощным инструментом для предотвращения ошибок и улучшения качества кода.


🔝 PyBytes Media | Telegram / 📷 Instagram / 📈Mentor Service
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🌭2
QUIZ: Что выведет данный код?

print(True is 1)
Anonymous Quiz
64%
True
37%
False
3
Погружаемся в True, False и None в Python


📈 Python обладает тремя основными объектами, играющими ключевую роль в логике и управлении потоком программ: True, False и None.

- True и False являются экземплярами типа bool, который, в свою очередь, является подклассом int. Это означает, что они могут участвовать в математических выражениях как 1 и 0.


# Пример с математикой
результат = True + False # будет 1


😱 Создание подклассов для bool запрещено, чтобы обеспечить чистоту и предсказуемость кода.

➡️Взгляд на None и NoneType

None —
это единственный экземпляр NoneType и представляет собой синглтон, указывающий на отсутствие значения. Эта особенность позволяет использовать None в качестве уникального индикатора "пустоты" или "ничего".


# Демонстрация None
a = None
print(a is None) # Выведет True


😠 Каждая функция в Python, которая не имеет явного return, по умолчанию возвращает None. Это важно для понимания поведения функций, которые не предназначены для возвращения значения.


def test_func():
pass

print(test_func() is None) # Выведет True


😎Понимание True, False и None необходимо для осознания логических операций и управления потоком в Python, что делает код более чистым и интуитивно понятным.


🔝 PyBytes Media | Telegram / 📷 Instagram / 📈Mentor Service
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4💋3
Итераторы и генераторы [Часть 2]

💃 В повседневной работе мы часто сталкиваемся с генераторами, даже не задумываясь об этом. Например, функция range() в Python - это классический генератор, который позволяет эффективно генерировать последовательность чисел.


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))


🔄 Один из продвинутых инструментов генераторов - метод send(), который позволяет отправлять значение обратно в генератор. Это открывает возможности для интерактивного взаимодействия с генератором.


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


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


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

🔝 PyBytes Media | Telegram / 📷 Instagram / 📈Mentor Service
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥2
QUIZ: Что выведет данный код?

print(-~1)
Anonymous Quiz
10%
2
49%
TypeError
15%
0
26%
🫠
😈3🌭2