Python for everyboby
1.7K subscribers
23 photos
22 links
Download Telegram
Бывало? 😁
😁60🤔5👍1🥰1
😁39👍14
😁24🔥2
😁60👍6
На степике оформил курс на pygame
https://stepik.org/z/118434
Видеоуроки будут сопровождаться кодом, который можно сразу запустить
На пробных уроках можете посмотреть формат
🔥29👍52
👍17😁10🤮1
👍35😁3
👍56😁24🔥4🤮1
👍33😁9👎1🤮1
Как создать папку с помощью Python?

Вам поможет модуль os и его функция mkdir. Она создает папку по указанному пути. Путь до каталога можно указать как абсолютный, так и относительный. В примере ниже указан относительный адрес, и новая папка будет создана в том же каталоге, что и запускаемый скрипт.

Функция mkdir вызовет ошибку FileExistsError, если каталог с таким именем и адресом уже существует. Поэтому, чтобы избежать ошибок, мы должны вызывать ее с помощью try/except.
👍25👏3🔥1
Как создать вложенные папки?

Python предоставляет функцию os.makedirs(), которая позволяет создавать вложенные папки. Функция принимает один аргумент - путь к папке, которую нужно создать, и создает все промежуточные папки, если они не существуют.

И перед ее запуском лучше проверять наличие текущего каталога в системе и всех вложенных подпапок при помощи функции os.path.exists. Потому что при попытке создать каталог, который уже существует в системе, возникает исключение FileExistsError
👍205👌3🔥2
Метод new

Магический метод new вызывается для фактического создания нового объекта, как экземпляра желаемого класса. Вызов метода new осуществляется до метода init

За подробностями и практикой
https://stepik.org/a/114354
👍12🤯42
Поздравляю с наступающим Новым годом! 🎊🎉🥂

Впереди долгие каникулы — это отличное время для того, чтобы подумать о будущем. Если кто-то из вас давно хотел погрузиться в изучение Питона или углубить свои знания — добро пожаловать на мои курсы. Специально для вас я объявляю новогодние скидки! Пройдите по ссылке ниже и введите промокод HAPPY_NEW_YEAR для того, чтобы получить скидку в 33% на любой платный курс

Или оплату можно произвести напрямую, для этого свяжитесь со мной в телеграмме.

ООП: Объектно-ориентированное программирование на Python
https://stepik.org/a/114354

Продвинутый python: заряди свои батарейки
https://stepik.org/a/127822

Django, потанцуем
https://stepik.org/a/114288
27👍4
Друзья, в преддверии выхода нового курса, решил устроить распродажу

Сейчас вы можете приобрести мои курсы на степике по следующим ценам:

ООП: Объектно-ориентированное программирование на Python — 2072р
https://stepik.org/a/114354

Django, потанцуем? — 1875р
https://stepik.org/a/114288

Продвинутый python: заряди свои батарейки —1920р
https://stepik.org/a/127822

Pygame - учимся создавать свои игры - 600 ₽
https://stepik.org/a/118434

При оплате по СБП или банковским переводом (из РФ или из-за рубежа) предоставляется дополнительная скидка:

🎁 при покупке одного курса - 100р,
🎁🎁 при оплате двух курсов - 500р
🎁🎁🎁 при покупке трех - 1000р

По вопросам приобретения курсов обращайтесь в личные сообщения.
https://t.me/artem_egoroff
🔥18👍4
В честь прошедшего дня программиста предлагаю воспользоваться промокодом Я_У_МАМЫ_ПРОГРАММИСТ, который позволит приобрести мои платные курсы со скидкой до 30%:

ООП: Объектно-ориентированное программирование на Python

Django, потанцуем?

Продвинутый python: заряди свои батарейки

Pygame - учимся создавать свои игры

Применить промокод Я_У_МАМЫ_ПРОГРАММИСТ можно при оплате курса по указанным выше ссылкам
🔥202
Функции lambda + map

Очень часто можно встретить комбинацию анонимной функции внутри вызова map. Использование lambda функции помогает избежать определение обычной функции, делая код короче.

В данном примере мы возводим в квадрат все элементы списка numbers при помощи map и lambda функций

Не знаешь, что такое map или анонимная функция?
Мой бесплатный курс по функциональному программированию поможет тебе разобраться в этих темах

https://stepik.org/course/195619/promo
👍202🔥1
Функция enumerate

В python есть элегантный способ обойти элементы коллекции, сразу получая за итерацию индекс и значение элемента коллекции. Это функция enumerate.

А вы знали, что функция enumerate:

☑️ на самом деле является классом, а не функцией?

☑️ возвращает итератор в качестве своей работы?

Еще больше подробностей об enumerate и других функциях вы можете найти на моем бесплатном курсе
Функциональное программирование на Python
13👍7
Класс defaultdict для упрощения работы со словарями

Модуль collections в Python предоставляет специальный тип словаря, называемый defaultdict. Он позволяет автоматически создавать значения для новых ключей, что значительно упрощает работу с словарями.

Для инициализации значения нового ключа в defaultdict достаточно передать тип желаемого значения. В примере ниже мы указываем тип list для всех наших ключей, следовательно
from collections import defaultdict

# создание defaultdict, использующего list() в качестве значения по умолчанию
marks = defaultdict(list)

# добавление элементов в словарь
marks['Asya'].append(5)
marks['Asya'].append(4)

# обращение к несуществующему ключу
print(marks['Kate']) # выведет [], так как list() возвращает []

# обращаясь к несуществующему ключу John,
# получаем значение по умолчанию и сразу расширяем его списком [4, 5, 5, 4]
marks['John'].extend([4, 5, 5, 4])
marks['John'].append(3)

print(marks) # {'Asya': [5, 4], 'Kate': [], 'John': [4, 5, 5, 4, 3]}


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

Еще больше подробностей про defaultdict и практики по этой теме можно найти в курсе
Продвинутый python: заряди свои батарейки
👍13🔥52
🧑‍🎓 Что такое итератор?

Итератор в Python — это объект, в реализации которого имеются два магических метода:

1️⃣ __iter()__

2️⃣ __next
()__

За счет этого итераторы обладают способностью работать со встроенными функциями next() и iter().

📚 Основное предназначение - организация последовательного перебора элементов объекта. Итераторы используются для работы с циклом for и обеспечивают ленивую генерацию данных, не загружая их все сразу в память. Каждый вызов метода next() возвращает следующий элемент, а при отсутствии элементов выбрасывается исключение StopIteration.

Ниже представлена реализация итератора внутри класса Student, позволяющая последовательно обходить все символы имени и фамилии студента:
class Student:
def __init__(self, name, surname):
self.name = name
self.surname = surname
self.index = 0

def __iter__(self):
return self

@property
def full_name(self):
return self.name + ' ' + self.surname

def __next__(self):
if self.index >= len(self.full_name):
self.index = 0
raise StopIteration
self.index += 1
return self.full_name[self.index - 1]

ivan = Student('Ivan', 'Sidorov')
for s in ivan:
print(s)


✏️ Итераторы полезны для работы с большими данными и потоками данных.

Подробности и практику по итераторам можно найти здесь:
https://stepik.org/lesson/1367599/step/1?unit=1383640
https://stepik.org/lesson/682559/step/1?unit=681371
🔥12
🧑‍🎓 Что такое `__slots__`?

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

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

class PointSlots:
# Перечисляем все возможные атрибуты экземпляров класса
__slots__ = ('x', 'y')

def __init__(self, x, y):
self.x = x
self.y = y


p = PointSlots(3, 4)
print(p.x) # 3
print(p.y) # 4

В экземплярах класса PointSlots после указания атрибута __slots__ допустимо обращаться только к атрибутам x и y. При попытке создать новый атрибут или обратиться к словарю __dict__ будет возникать ошибка AttributeError

print(p.__dict__)
# AttributeError: 'PointSlots' object has no attribute '__dict__'

p.z = 100
# AttributeError: 'PointSlots' object has no attribute 'z'


📚 Основное предназначение __slots__ - зафиксировать определенное множество атрибутов, которые доступны экземплярам.

✏️ При использовании __slots__ Python не создает обычный словарь __dict__ для хранения атрибутов, а вместо этого выделяет фиксированное место для указанных атрибутов. Это помогает повысить производительность и экономить память, особенно при создании большого числа объектов.
🔥8👍41