Hello World – Telegram
Hello World
1.68K subscribers
71 photos
6 videos
3 files
161 links
Be so good that you cannot be ignored. And then, go one step beyond.
Download Telegram
Объявление нескольких конструкторов в классе

Перегрузка функций – это одна из возможностей, весьма широко используемых в различных языках программирования, но не в Python.

📌 Хотя в Python нельзя перегрузить обычную функцию, можно пользоваться чем-то вроде перегрузки конструкторов с использованием методов класса.

📌 Конечно, вместо использования методов класса, можно поместить всю логику альтернативных конструкторов в __init__ и решить задачу с использованием *args**kwargs и множества выражений if.

✏️ В результате может получиться рабочий код, но этот код будет тяжело читать и поддерживать. Тут можно порекомендовать поместить минимум логики в __init__ и выполнить все операции в отдельных методах/конструкторах.

✏️ При таком подходе в нашем распоряжении окажется чистый код, с которым удобно будет работать и автору этого кода, и тому, кто этим кодом будет пользоваться.

Посмотреть код
Простейший парсер прокси

📌 Для реализации нам потребуется библиотека proxybroker, и одна асинхронная функция для записи в файл.

📌 С помощью переменной limit можно задавать количество адресов.

✏️ В функции grab, кроме того, можно задавать types=['HTTP', 'HTTPS']

Посмотреть код
Модуль dis и constant folding в Python 3.7

Кратко разбираем особенности constant folding в Python 3.7

Читать статью
​​Параметры в iter

📌 Обычно built-in функция iter() возвращает итератор от переданной последовательности.

📌 Однако, можно передать два параметра. В таком случае, первый параметр должен быть callable-объектом, а второй — результатом вызова первого объекта, на котором нужно остановить итерирование.

Как пример, считывание данных из файла по кускам длины 64, до первого вхождения пустой строчки.

#iter
Python фичи

Как сделать так, чтобы функция возвратила True?

Предлагайте свои варианты в нашем чате, либо дождитесь объяснения.
Решение #1

Сейчас я объясню как это работает. Когда мы используем оператор +, Python вызывает double underscore метод в зависимости от того, с какой стороны оператора находится наш объект.

📌 Если наш объект находится слева от оператора, то будет вызываться __add__, если он находится справа, будет вызываться __radd__.

📌 Объект Test вернет 0, если вызывается Test () + 1, и 1, если вызывается 1 + Test (). Хитрость в том, что мы перегружаем только один метод, а другой оставляем прежним. Это поможет нам пройти первое условие.

📌 Если вы посмотрите на него второй раз, вы увидите, что он также помогает нам пройти вторую проверку if, потому что мы просто возвращаем ввод, если он не равен 1, поэтому Test () + 2 всегда будет похож на 2 + Test ().
Решение #2

Только -7 сработает в данном случае. Никакое другое число не вернет True.

📌 Почему так? В Python целые числа от -5 до 256 имеют заранее выделенные участки в памяти. Когда выполняется какая-либо операция и ее результатом является число из этого промежутка, то вы получаете объект из этого выделенного участка (-5, 256).

📌 Эти объекты являются синглтонами, поэтому оператор is возвращает True. Однако, если вы используете целые числа не из этого промежутка, вы получите новый экземпляр класса.

📌 Таким образом, используя -7 вы получите новый экземпляр класса -6 но тот же самый экземпляр класса для -5.
Какие языки вы знаете? Можно выбрать несколько.
Anonymous Poll
33%
C/C++
16%
C#
5%
Go
18%
Java
27%
JavaScript
1%
Objective-C
14%
PHP
79%
Python
38%
SQL
18%
Другой
​​Что новенького?

Недавно один мой знакомый скинул мне интересный пример библиотеки, которая позволяет писать код на C прямо в функциях Python.

Либу я глянул, но мне кое-что не понравилось и поэтому я решил написать свою реализацию подобной библиотеки с использованием ctypes.

Пока я ковырялся с этим, изучил практически досконально метод __call__ и понял что декорирующие классы могут очень сильно менять логику Python.
✏️ Например я могу объявить одну функцию, а при ее вызове задать совсем другую логику.

Ссылка на гитхаб

Буду очень рад, если вы подпишетесь/поставите звездочку в гитхабе. Если среди вас есть опытные программисты, то не стесняйтесь вносить правки.
Что будет выведено в интерактивном режиме интерпретатора?

Выберите правильный ответ👇
Всем привет!

Как вы знаете, у меня есть еще один проект, который мы назвали @python_academy. И вот, у нас там недавно вышел курс для новичков в Python.

Мы затронем разные темы, от установки интерпретатора, до работы с классами, а в конце напишем небольшой блокчейн-сервис. Такой проект уже можно будет положить в портфолио.

Курс платный, но совсем недорогой. Более подробно узнать о нем можно, написав мне @dartrisen или @a1f20. Если вы хотите как-то поддержать меня и мой проект, то это самый лучший способ.

Спасибо!
Напоминаю, начало уже завтра. Спустя неделю, все кто хотел, уже будут заливать новый проект к себе на гитхаб.

Может быть именно на него обратят внимание при приглашении на работу?
Forwarded from Python Academy
​​Содержание и формат нашего курса

После анонсирования курса нам поступило множество вопросов, и мы решили ответить на самые важные на канале.

📅 Формат и время. Все лекции будут проходить по вечерам с 16 по 23 марта в текстовом формате в закрытом канале – максимально удобном для изучения.

📝 Материалы останутся навсегда. В случае, если вы не можете присутствовать во время лекции, вы всегда сможете вернутся к ней позже.

💬 Поддержка. Вы всегда сможете получить помощь и разъяснения в закрытом чате для всех участников.

Начало уже через 4 дня. Успейте записаться: @a1f20 и @dartrisen
Я тут внезапно понял, что наверное засиделся на своем любимом Sublime Text 3. Прикидывал в голове, какие у него могут быть плюсы/минусы и так ничего толкового не смог придумать. Наверное попробую какие-либо другие редакторы.
GitHub выпустил мобильные приложения

GitHub выпустил бета-версию своего мобильного приложения для Android и iOS еще в ноябре 2019 года. Позавчера компания объявила, что доступна стабильная версия для обеих операционных систем.

Скачать на Android
Скачать на iOS
​​Setters & Getters в Python

В Python методы getters и setters немного не такие, как в других языках программирования. По сути, основная цель этих методов заключается в инкапсуляции данных.

Методы getter и setter в Python часто используются:

🔸 Для того, чтобы добавить логику проверки при получении доступа к такой переменной;

🔸 Чтобы избежать прямого доступа к атрибуту класса, то есть для того, чтобы эти атрибуты не были доступны напрямую (или изменены внешним пользователем).
This media is not supported in your browser
VIEW IN TELEGRAM
Учитель провёл урок геометрии в новой Half-Life Alyx

Некоторые, кому довелось вживую пройти Half-Life Alyx, обнаружили в одной из локаций стекло с лежащими неподалёку цветными маркерами.

🖍️Этими маркерами можно пользоваться и рисовать на стекле всё, что душе угодно. Например, формулы. Чем собственно и воспользовался учитель геометрии из американского города Сан-Диего.

А как в условиях карантина ваши учителя проявляют креативность?
Немного переписал свою старую статью по multiprocessing, может быть кому-то будет интересно.
Forwarded from Python Academy
Работа с процессами в Python

С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.

Читать 6 минут