Отложенная оценка аннотаций типов
PEP-563 представил отложенную оценку аннотаций типов. Это означает, что все ваши аннотации типов во время выполнения рассматриваются лишь как строки. Но это помешало работе pydantic и typeguard.
Однако если такое поведение вам все таки нужно, используйте annotations из модуля __future__:
#факты
PEP-563 представил отложенную оценку аннотаций типов. Это означает, что все ваши аннотации типов во время выполнения рассматриваются лишь как строки. Но это помешало работе pydantic и typeguard.
Однако если такое поведение вам все таки нужно, используйте annotations из модуля __future__:
def class_decorator(cls): annotations = get_type_hints(cls) # raises NameError on 'C' print(f'Annotations for {cls}: {annotations}') return cls@class_decoratorclass C: singleton: 'C' = None#факты
Задача на сложение матриц
Уровень: новичок
Напишите функцию (без использования numpy.matrix.sum()), которая складывает две квадратные матрицы и возвращает их сумму. Все элементы матриц — целочисленные значения.
#задача
Уровень: новичок
Напишите функцию (без использования numpy.matrix.sum()), которая складывает две квадратные матрицы и возвращает их сумму. Все элементы матриц — целочисленные значения.
matrixAddition( [ [1, 2, 3], [3, 2, 1], [1, 1, 1] ],// + [ [2, 2, 1], [3, 2, 3], [1, 1, 3] ] )// returns: [ [3, 4, 4], [6, 4, 4], [2, 2, 4] ]#задача
💩11❤1👍1
Продвинутая логика именования в Python
Разобрали на примерах, как и почему лучше называть различные объекты в Python. Там уже наметился небольшой спор, присоединяйтесь, если интересно. Будем рады вашим техникам именования.
Статья
#лучшиепрактики
Разобрали на примерах, как и почему лучше называть различные объекты в Python. Там уже наметился небольшой спор, присоединяйтесь, если интересно. Будем рады вашим техникам именования.
Статья
#лучшиепрактики
Tproger
Продвинутая логика именования в Python
Разобрали на примерах, как и почему лучше называть различные объекты в Python.
😁1
Почему Джанго?
Возможно, вы уже слышали, что Django назван в честь американского гитариста Джанго Рейнхардта. Один из соавторов фреймворка, Адриан Холоватый, вероятно, поспособствовал такому неймингу. Он обожает Рейнхардта и ведет YouTube-канал, посвящённый не только каверам на песни джазмена, но и трактует известные композиции по-новому.
Если вы тоже не знали, как называется жанр музыки из открывающей темы Спанчбоба, то добро пожаловать в мир джаз-мануша (цыганский джаз). На видео Адриан обыграл тему из «Братьев Марио».
#django
Возможно, вы уже слышали, что Django назван в честь американского гитариста Джанго Рейнхардта. Один из соавторов фреймворка, Адриан Холоватый, вероятно, поспособствовал такому неймингу. Он обожает Рейнхардта и ведет YouTube-канал, посвящённый не только каверам на песни джазмена, но и трактует известные композиции по-новому.
Если вы тоже не знали, как называется жанр музыки из открывающей темы Спанчбоба, то добро пожаловать в мир джаз-мануша (цыганский джаз). На видео Адриан обыграл тему из «Братьев Марио».
#django
❤5💩4
Torrent-Search-Bot для магнитных ссылок на торренты
Готовый Telegram-бот для тех, кому лень включать VPN. Просто разверните его копию с помощью собственного токена от BotFather, и он будет слать в ответ magnet link.
Ссылка на репозиторий
#факты
Готовый Telegram-бот для тех, кому лень включать VPN. Просто разверните его копию с помощью собственного токена от BotFather, и он будет слать в ответ magnet link.
Ссылка на репозиторий
#факты
👍7❤1💩1
В коде затык? Сообщество Zen of Python поможет
Мы пробуем рубрику «Грокаем вопрос» для Python-новичков и не только. Напишите в комментариях, с какой задачей вам нужно справиться. Мы выберем несколько самых интересных вопросов и постараемся обеспечить вас несколькими версиями ответов, в том числе с помощью подписчиков.
Пожалуйста, следуйте стандартам постановки вопроса в стиле Stack Overflow. Мы надеемся на ваше чувство эмпатии и взаимовежливости.
#грокаем
Мы пробуем рубрику «Грокаем вопрос» для Python-новичков и не только. Напишите в комментариях, с какой задачей вам нужно справиться. Мы выберем несколько самых интересных вопросов и постараемся обеспечить вас несколькими версиями ответов, в том числе с помощью подписчиков.
Пожалуйста, следуйте стандартам постановки вопроса в стиле Stack Overflow. Мы надеемся на ваше чувство эмпатии и взаимовежливости.
#грокаем
👍11
Faker: игрушечные данные
Библиотека позволяет сгенерировать dummy data: имена, адреса, lorem ipsum, даты и т.д.
Поддерживает работу в командной строке:
Репозиторий на GutHub
#библиотека
Библиотека позволяет сгенерировать dummy data: имена, адреса, lorem ipsum, даты и т.д.
$ faker address968 Bahringer Garden Apt. 722Kristinaland, NJ 09890Поддерживает работу в командной строке:
faker [-h] [--version] [-o output] [-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}] [-r REPEAT] [-s SEP] [-i {package.containing.custom_provider otherpkg.containing.custom_provider}] [fake] [fake argument [fake argument ...]]Репозиторий на GutHub
#библиотека
❤🔥12❤1👍1🌭1
Gooey: из CLI-приложения в GUI
Gooey превратит вашу консольную программу в полноценное графическое приложение всего одной строкой кода.
Ссылка на репозиторий
#библиотека
Gooey превратит вашу консольную программу в полноценное графическое приложение всего одной строкой кода.
Ссылка на репозиторий
#библиотека
🤔12👎1
atexit для завершающей логики
Хэндлер позволяет исполнять хуки при закрытии программы. Это подойдёт:
— для завершения ожидающих процессов;
— для отправки ожидающих сообщений в логи;
— для сохранения истории интерпретатора.
В примере ниже создаётся счётчик падений программы:
#факты
Хэндлер позволяет исполнять хуки при закрытии программы. Это подойдёт:
— для завершения ожидающих процессов;
— для отправки ожидающих сообщений в логи;
— для сохранения истории интерпретатора.
В примере ниже создаётся счётчик падений программы:
try: with open('counterfile') as infile: _count = int(infile.read())except FileNotFoundError: _count = 0def incrcounter(n): global _count _count = _count + ndef savecounter(): with open('counterfile', 'w') as outfile: outfile.write('%d' % _count)import atexitatexit.register(savecounter)#факты
👍9❤1
tqdm для прогресс-баров на Python
Если вы создаёте свою библиотеку или автоматизируете процессы с помощью bash-скриптов, отобразить ход исполнения запущенных команд можно с помощью tqdm.
Репозиторий на GitHub
#библиотека
Если вы создаёте свою библиотеку или автоматизируете процессы с помощью bash-скриптов, отобразить ход исполнения запущенных команд можно с помощью tqdm.
Репозиторий на GitHub
#библиотека
👍9
FreezeGun: заморозка времени для тестов
С помощью библиотеки freezegun можно «заморозить» время до определённой точки, обеспечив точную проверку тестируемых функций.
Репозиторий на GitHub
#библиотека
С помощью библиотеки freezegun можно «заморозить» время до определённой точки, обеспечив точную проверку тестируемых функций.
Репозиторий на GitHub
#библиотека
🔥8💩3
Задача о вычурном регистре
Напишите функцию, которая принимает строку и возвращает её же, причём все чётные символы в каждом слове записаны в верхнем регистре, а нечётные — в нижнем.
Пример:
Первый символ слова имеет нулевой индекс и является чётным, поэтому он должен быть в верхнем регистре. Вам предстоит начинать отсчёт заново для каждого слова.
Переданная строка будет состоять только из букв алфавита и пробелов. Пробелы будут присутствовать только в том случае, если слов несколько. Слова будут разделены одним пробелом.
#задача
Напишите функцию, которая принимает строку и возвращает её же, причём все чётные символы в каждом слове записаны в верхнем регистре, а нечётные — в нижнем.
Пример:
"Строка" => "СтРоКа"Первый символ слова имеет нулевой индекс и является чётным, поэтому он должен быть в верхнем регистре. Вам предстоит начинать отсчёт заново для каждого слова.
Переданная строка будет состоять только из букв алфавита и пробелов. Пробелы будут присутствовать только в том случае, если слов несколько. Слова будут разделены одним пробелом.
#задача
👍5❤1
GIL: зачем он нужен и как с ним жить
Тимлид Evrone Григорий Петров очень доступно знакомит с Глобальной блокировкой интерпретатора в своей 35-минутной лекции. С помощью видео можно узнать на доступном языке:
— как засыпают и просыпаются потоки;
— от чего защищает GIL;
— как GIL работает изнутри.
#GIL
Тимлид Evrone Григорий Петров очень доступно знакомит с Глобальной блокировкой интерпретатора в своей 35-минутной лекции. С помощью видео можно узнать на доступном языке:
— как засыпают и просыпаются потоки;
— от чего защищает GIL;
— как GIL работает изнутри.
#GIL
🔥9👍1
Unicaps: API для решения CAPTCHA
Инструмент поддерживает несколько десятков видов капчи и асинхронность:
Репозиторий на GitHub
#библиотека
Инструмент поддерживает несколько десятков видов капчи и асинхронность:
>>> from unicaps import CaptchaSolver, CaptchaSolvingService>>> solver = CaptchaSolver(CaptchaSolvingService.TWOCAPTCHA, api_key="<API_KEY>")>>> solved = solver.solve_image_captcha(open("captcha.jpg", "rb"), is_phrase=False, is_case_sensitive=True)>>> solved.solution.text... 'w93Bx'>>> solved.report_good()... TrueРепозиторий на GitHub
#библиотека
🤣5❤2👍1
whois для домена на Python
Библиотека позволяет выводить те же сведения о сайте, что и одноимённый сервис.
Репозиторий на GitHub
#библиотека
Библиотека позволяет выводить те же сведения о сайте, что и одноимённый сервис.
>>> import whois>>> domain = whois.query('google.com')>>> print(domain.__dict__)... {... 'expiration_date': datetime.datetime(2020, 9, 14, ... 0, 0),... 'last_updated': datetime.datetime(2011, 7, 20, 0, 0),... 'registrar': 'MARKMONITOR INC.',... 'name': 'google.com',... 'creation_date': datetime.datetime(1997, 9, 15, 0, 0)... }>>> print(domain.expiration_date)... 2024-09-14 00:00:00Репозиторий на GitHub
#библиотека
👍7