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
Нахождение часто встречающихся элементов в списке

📌 Нахождение в списке таких элементов, которые встречаются в нём чаще других, это весьма распространённая задача. Решить её можно, например, воспользовавшись циклом for и словарём, в котором будут собраны сведения о количестве одинаковых элементов.

📌 Но такой подход – это конечно пустая трата времени. Решать подобные задачи можно с помощью класса Counter из модуля collections.

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

Посмотреть код

#collections
Очистка входных строковых данных

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

📌 Иногда данные можно очистить с помощью регулярного выражения.

📌 Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. Здесь пробельные символы "\n" и "\t" заменяются на обычные пробелы, а символ "\r" удаляется из строки полностью.

✏️ Это – простой пример, но мы можем его расширить, создавая таблицы переназначения символов с использованием пакета unicodedata и его функции combining().

Такой подход позволяет убирать из строк всё то, что там не нужно.

Посмотреть код

#tips
Что будет выведено в функции print?
Выберите правильный ответ👇
comp3321_red.pdf
18.5 MB
курс от АНБ по Python

В прикрепленном файле вы найдете немного отредактированную четырехсотстраничную распечатку учебного курса COMP 3321 по Python, который преподается в АНБ.

Данный курс содержит краткое введение в Python от его создателя Гвидо ван Россума и объясняет, для чего этот язык подходит лучше всего, например, для автоматизации задач, создания веб-приложений или проведения углубленных математических исследований.
Объявление нескольких конструкторов в классе

Перегрузка функций – это одна из возможностей, весьма широко используемых в различных языках программирования, но не в 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. Прикидывал в голове, какие у него могут быть плюсы/минусы и так ничего толкового не смог придумать. Наверное попробую какие-либо другие редакторы.