#python python... PYTHON 🔛 🚀
11 subscribers
912 photos
7 videos
158 files
1.54K links
Download Telegram
♑️⤵️ Наследование в ООП

Представим себя, на минуту, инженерами автомобильного завода.
Нашей задачей является разработка современного автомобиля.
У нас уже есть предыдущая модель, которая отлично зарекомендовала себя в течение многолетнего использования.
Всё бы хорошо, но времена и технологии меняются, а наш современный завод должен стремиться повышать удобство и комфорт выпускаемой продукции и соответствовать современным стандартам.

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

#python
🆑5️⃣ Осваиваем классы за 5 минут

Почти все в Python является классом.
Класс — это тип, описывающий устройство объектов: как бы логическая группа атрибутов и функций, которые используются для одного и того же вида данных.
#python
🧩 Шпаргалка по функции product

Функция product() модуля itertools возвращает декартово произведение входных итерируемых последовательностей *iterables.

Функция itertools.product() примерно эквивалентно вложенным циклам for .. in .. в выражении генератора.
Например выражение product(A, B) возвращает то же, что и выражение-генератор ((x,y) for x in A for y in B).

#python
101 вопрос, на которые должен ответить Python-разработчик

Готовитесь к собеседованию? Или просто изучаете Python? В этой статье собраны наиболее популярные вопросы по Python, которые помогут проверить ваши знания и подтянуть пробелы:

https://tproger.ru/articles/101-vopros-python-razrabotchiku/

#python
Forwarded from ChernovDev (Stanislav Chernov)
Наткнулся на удобное, простое объяснение от Сергея Балакирева про #python. Страница в закладки https://proproprogs.ru/python, там прям кладезь знаний. А еще у него есть курсы на степике.

А я по нему flask изучаю (на утубе есть плейлист)

Написал ему в личку, жаль , больше не планирует по фласку ничего записывать. А как разжевывает материал - там вообще класс! Рекомендую👍

не реклама)
Типизированный_Python_для_профессиональной_разработки.pdf
3.4 MB
Рад поделиться с вами книжкой по типизированному Python, о разработке которой я говорил здесь. Вжух!

Здесь актуальная версия книги от 8 июня 2022.

Цель материала — помочь тебе научиться писать более красивые, надёжные и легко сопровождаемые программы на Python. Это не начальный уровень владения языком, предполагается, что ты уже умеешь программировать, но хочешь научиться делать это лучше.

Поговорим о том, почему вопросы типизации очень важны и как они влияют на программу, разберём все основные структуры для использования в типизации, напишем программу, которая находит наши GPS координаты и показывает текущую погоду по ним. В ходе разработки программы затронем и обсудим много смежных тем — архитектура кода, построение слоёв логики в приложении и др.

Код из книги
Видео версия — текстовую обязательно читаем тоже, в ней ряд тем расширен.

РАСПРОСТРАНЕНИЕ поддерживается, но, пожалуйста, в виде ссылки на этот пост или ссылки на веб-версию, т.к. книга обновляется.

#python #backend #it #codebetter #books
Forwarded from Python книги
The Quick Python Book

Автор:
Naomi Ceder
Год издания: 2018

#python #en

Скачать книгу
The Well-Grounded Python Developer

Автор:
Doug Farrell
Год издания: 2023

#python #en

Скачать книгу
Forwarded from DE
👩‍💻 match/case

Для версий Python 3.10 и выше.

Деструктуризация с помощью образцов настолько выразительна, что иногда даже наличие единственной ветви case может сделать код проще. Гвидо ван Россум собрал коллекцию примеров match/case, один из которых назвал «Очень глубокий итерируемый объект и сравнение типа с выделением».

Это здорово, но меня больше поразил тот факт, что можно проверять типы и насколько выразительно это выглядит, ниже смотри пример.

❤️‍🩹 Классическая версия:
 def write_value(self, value):
if isinstance(value, str):
self.simple_element("string", value)

elif value is True:
self.simple_element("true")

elif value is False:
self.simple_element("false")

elif isinstance(value, int):
if -1 << 63 <= value < 1 << 64:
self.simple_element("integer", "%d" % value)
else:
raise OverflowError(value)

elif isinstance(value, float):
self.simple_element("real", repr(value))

elif isinstance(value, dict):
self.write_dict(value)

elif isinstance(value, (bytes, bytearray)):
self.write_bytes(value)

elif isinstance(value, datetime.datetime):
self.simple_element("date", _date_to_string(value))

elif isinstance(value, (tuple, list)):
self.write_array(value)

else:
raise TypeError("unsupported type: %s" % type(value))
🔥 Версия с использованием match/case:
 def write_value(self, value):
match value:
case str():
self.simple_element("string", value)

case True:
self.simple_element("true")

case False:
self.simple_element("false")

case int():
if -1 << 63 <= value < 1 << 64:
self.simple_element("integer", "%d" % value)
else:
raise OverflowError(value)

case float():
self.simple_element("real", repr(value))

case dict():
self.write_dict(value)

case bytes() | bytearray():
self.write_bytes(value)

case datetime.datetime():
self.simple_element("date", _date_to_string(value))

case tuple() | list():
self.write_array(value)

case _:
raise TypeError("unsupported type: %s" % type(value))
#python #casematch
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DE
Forwarded from DE
Опросы в телеге не поддерживают форматирование кода, дублирую код для проверки:

t = (1, 2, [3, 4])
try:
t[2] += [5, 6]
except TypeError as err:
print(err)
print(t)


Это патология Python.
Из такого примера ты можешь сделать следующие выводы:

1️⃣ Не помещай изменяемые элементы в кортежи.
2️⃣ Составное присваивание -- не атомарная операция
3️⃣ Иногда следует изучать байт-код, чтобы понять, что происходит под капотом


Удобный ресурс для пошагового исполнения кода с визуализацией - pythontutor.com

#python #quiz #blowmymind
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DE
🖼️
И в дополнение к патологии выше, есть целый репозиторий с подобными штуками - ссылка

#python #wtfpython
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DE
Если тебе интересно заглянуть под капот Python и узнать, как устроены списки - есть отличная статья, которая начинается с достаточно простого примера и потом плавно погружает в глубины C-шной реализации списков в Python.

Автор статьи серьёзно подошёл к делу: он не только детально всё расписал, но и приложил кучу наглядных иллюстраций.

Даже если ты никогда не программировал на C, тебе будет понятен и интересен материал.

Ссылка на статью, рекомендую ознакомиться — это на самом деле увлекательно 🙂

#python
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DE
И ещё немного про Python.

Полезно тем, кто уже освоился с f-строками в Python и использует их для форматирования. Часто ты останавливаешься на чём-то вроде f"string {variable}", но знаешь ли ты, что f-строки скрывают в себе гораздо больше возможностей?

Например, представь, что тебе нужно превратить число в строку, где оно всегда будет занимать три позиции, дополняясь нулями спереди, если это необходимо. С f-строками это сделать проще простого! Если у тебя число 5, ты получишь "005", а если 123, то останется просто "123".

Гайд от PyBites показывает, на что способны f-строки. Если ты ещё не раскрыл для себя все возможности этого удобного инструмента - бегом читать 🙃

Ссылка

А ещё по f-строкам у меня была ссылка на другой хороший материал в посте

#python
Please open Telegram to view this post
VIEW IN TELEGRAM
Декоратор override

@override используется для переопределения методов в классах-наследниках. Он позволяет указать, что метод в подклассе переопределяет метод базового класса.

Это может быть полезно для:

— Повышения читабельности кода, так как сразу видно, какие методы переопределены.

— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.

— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.

#python #decorators
Forwarded from Data Советы
🖥 Pydantic vs. Attrs

Pydantic имеет встроенную функцию для проверки данных, но она использует много памяти.

Attrs не имеет встроенной проверки данных, но обеспечивает лучшую производительность и меньшее потребление памяти, что делает его идеальным для внутренних структур данных и простого создания классов в Python.

from attrs import define, field

@define
class UserAttrs:
name: str
age: int = field()

@age.validator
def check_age(self, attribute, value):
if value < 0:
raise ValueError("Возраст не может быть отрицательным")
return value # принимает любой положительный возраст

try:
user = UserAttrs(name="Bob", age=-1)
except ValueError as e:
print("ValueError:", e)


📌 Пример (https://codecut.ai/python-data-models-pydantic-or-attrs)
#python
#python python... PYTHON 🔛 🚀
Black? Если вкратце, то что это? А то будет тяжеловато сформировать вопрос в Гугле/чатгпт на основе "black"
Учись)
- https://chatgpt.com/share/67a1b96c-82a8-8009-b207-2ca96f740405

И isort сразу добавь.

Ну, кстати, давай уж и #mypy сразу осилить попробуй!) Вообще
- тема типизации в питон и вообще в любых других ЯП очень большая, сложная и не однозначная
- в питоне типизация опциональная (не обязательная), в отличие от многих других ЯП
- но в целом они все (ранее не «типизированные» ЯП) движутся к ней (напр, js -> ts)
- и тебе она может сначала показаться какой-то излишней
- но на всех больших и серьёзных проектах сейчас принято её использовать!
- поэтому лучше уже сейчас начать с ней разбираться
- тем более что у тебя очень простой проект, и начать с него будет отличным вариантом!
- со временем к тебе начнёт приходить и полезность типизации 😁
- поГПТи на эту тему самостоятельно

#типизация (правильнее говорить «аннотации типов») в #python
Please open Telegram to view this post
VIEW IN TELEGRAM
А вы знали, что в питоне так можно?

Собрала несколько кейсов, о которых вы могли даже не подозревать:

1️⃣ Имя функции - это переменная, и этому имени мы можем присвоить что угодно:

def func():
print('hi')

func()
# hi

func = -1

func()
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# TypeError: 'int' object is not callable


Естественно, после переопределения все предыдущие возможности перестают действовать

2️⃣ Та же история с модулями:

import math

type(math)
# <class 'module'>

math = -1

type(math)
# <class 'int'>


3️⃣ При импорте модулей существующие переменные перезаписываются:

x = 2

from mymodule import x

print(x)
# 'new_value'


4️⃣ А переменные после цикла остаются существовать:

for i in range(2):
print(i)

print(i) # 2


#python_tips
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
🖥 Вот 17 топовых GitHub-репозиториев для изучения Python с ссылками:

1. 30-Days-Of-Python — 30-дневный челлендж по основам Python.
2. Python Basics — азы Python для новичков, просто и с примерами.
3. Learn Python — справочник с кодом, пояснениями и практикой.
4. Python Guide — гайд по практикам, инструментам и сложным темам.
5. Learn Python 3 — руководство по Python 3 с практикой для начинающих.
6. Python Programming Exercises — 100+ задач по Python.
7. Coding Problems — алгоритмы и структуры данных для собесов.
8. Project-Based-LearningPython через реальные проекты.
9. Projects — идеи проектов для прокачки навыков.
10. 100-Days-Of-ML-Code — ML на Python шаг за шагом.
11. TheAlgorithms/Python — алгоритмы и структуры данных на Python.
12. Amazing-Python-Scripts — полезные скрипты: от утилит до автоматизации.
13. Geekcomputers/Python — скрипты для сети, файлов и задач.
14. Materials — код и проекты от Real Python.
15. Awesome Python — топ фреймворков, библиотек и ресурсов.
16. 30-Seconds-of-Python — короткие сниппеты для быстрых решений.
17. Python Reference — скрипты, туториалы и лайфхаки.

#python #github #learning

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM