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 начнет с просмотра A и, если A не имеет атрибута, то будет смотреть на B.

Таким образом, правильный ответ — 1.

📌Более подробно об этом можно почитать тут (MRO).
Что такое itertools?

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

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

Ранее мы уже немного касались itertools (tee, islice, permutations) а так же когда разбирали различия между генераторами и итераторами (здесь первая часть).
Chains 🔗

itertools.chain
Возвращает по одному элементу из первого итератора, потом из второго, до тех пор, пока итераторы не кончатся. Итоговый массив содержит все элементы данных итераторов.

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

from itertools import chain

print(list(chain(['a', 'b', 'c'], range(4))))
# Output: ['a', 'b', 'c', 0, 1, 2, 3]


itertools.chain.from_iterable
Работает аналогично chain. Также выполняется объединение списков. Отличие заключается в том, что аргумент только один – вложенный список со списками, которые надо объединить.

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

from itertools import chain

print(list(chain.from_iterable([['a', 'b', 'c'], range(4)])))
# Output: ['a', 'b', 'c', 0, 1, 2, 3]


#iterators #chain
This media is not supported in your browser
VIEW IN TELEGRAM
График популярности языков программирования, основанная на количестве заданных на Stack Overflow вопросов по соответствующему языку.

В целом, приятно за возросший интерес к языку Python. Но оно и понятно, в data science и machine learning без него никуда.

Все еще сомневаетесь, что пишете на лучшем языке в мире?
Что выведет функция?

def func(x, *y, **z):
print(z)

func(1,2,3)


upd: вместо None я имел в виду пустой словарь {}.
Hello World
Что выведет функция? def func(x, *y, **z): print(z) func(1,2,3) upd: вместо None я имел в виду пустой словарь {}.
Функция выведет пустой словарь {}

В момент инициализации функции, Python создает пустой словарь. Поскольку никаких именованных параметров не было передано в функцию (по сути мы передали 1 в x и (2, 3) в y), Python распечатает именно пустой словарь.
Распознавание лиц и верификация пользователей по ним – будущее или уже существующая реальность? Даже больше, каждый уже может написать свою подобную программу. Это настолько просто, что требуется буквально двадцать строк кода и всего лишь полчаса времени для понимания.

Читать статью
This media is not supported in your browser
VIEW IN TELEGRAM
Streamlit позволяет создавать приложения для проектов машинного обучения с обманчиво простыми скриптами Python. Он поддерживает горячую замену, поэтому ваши обновления обновляются в процессе редактирования и сохранения файла. Все, что вам нужно, это ваш любимый редактор и браузер. Посмотрите на Streamlit в действии.
Python имеет ужасную репутацию, когда речь идет о возможности параллельных вычислений. Не обращая внимания на типичные рассуждения о его потоках и GIL (который обычно нормально работает), реальная проблема многопоточности Python не техническая, а педагогическая. Распространенные руководства о библиотеках threading и multiprocessing в целом неплохие, но тяжеловаты для понимания.

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

Читать статью
В общем, мы создали объединенный чат нескольких каналов для взаимопомощи в программировании и просто общения – @python_chat_ru
Wolfram for Python

Может быть, кому то из вас это будет полезно. Не так давно появилась библиотека, которая позволит напрямую и эффективно вызывать Wolfram Language из языка Python.

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

WolframClientForPython под лицензией MIT, так что вы можете использовать ее по своему усмотрению.

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

Читать статью
Комбинация значений

Мы уже кратко касались некоторых полезных функций в itertools. Теперь поговорим о функциях-итераторах, позволяющих комбинировать различные значения, меняя местами их составляющие. К их числу относятся такие методы как:

📌combinations;
📌combinations_with_replacement;
📌permutations;
📌product.

combinations

Первая функция по комбинированию отдельных элементов последовательности принимает два аргумента. Первый позволяет задать определенный объект, а второй – количество значений, которые будут присутствовать в каждом новом отрезке. В данном примере демонстрируется работа функции combinations библиотеки itertools при создании списка.

from itertools import combinations
data = list(combinations('DOG', 2))
print(data)

# Output: [('D', 'O'), ('D', 'G'), ('O', 'G')]


Как видно из кода, метод получает строку DOG, которая впоследствии раскладывается на отдельные символы. Далее происходит группировка по 2 буквы так, чтобы каждая новая выборка отличалась от всех существующих. Функция print выводит полученный список data на экран, отображая все сформированные пары символов D, O, G.

combinations_with_replacement

Более продвинутая вариация предыдущего итератора предоставляет программе возможность делать выборку из отдельных элементов с учетом их порядка. В следующем образце кода показано использование combinations_with_replacement с уже известными аргументами.

from itertools import combinations_with_replacement
for i in combinations_with_replacement('DOG', 2):
print(''.join(i))

# Output:
DD
DO
DG
OO
OG
GG


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

permutations

Работа функции permutations модуля itertools в Python похожа на комбинацию со сменой порядка. Однако в ней не допускается размещение идентичных элементов в одной группе. Ниже приведен код, демонстрирующий поведение и результат выполнения этого метода в цикле for.

from itertools import permutations
for i in permutations('DOG', 2):
print(''.join(i))

# Output:
DO
DG
OD
OG
GD
GO


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

product

Последний из комбинационных итераторов получает в качестве параметра массив данных, состоящий из нескольких групп значений. Функция product библиотеки itertools в Python 3 позволяет получить из введенной последовательности чисел или символов новую совокупность групп во всех возможных вариациях. Следующий пример показывает исполнение этого метода.

from itertools import product
data = list(product((0, 1), (2, 3)))
print(data)

# Output: [(0, 2), (0, 3), (1, 2), (1, 3)]


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

#itertools #combinations
Мой коллега написал бота, который отправляет котиков и собачек. Советую ознакомиться с ним, поскольку даже в таком простейшем боте есть интересные вещи, например админская панель, позволяющая делать масс-рассылки. К тому же, код заботливо выложен на гитхаб.

Кстати, это только первая часть нашего с ним общего проекта. Но об этом уже немного позже.
Forwarded from Dank Code
Вероятнее всего, многие уже видели моего нового бота @DailyAnimalsBot, но всё же скидываю и сюда. Правда он умеет только отправлять котиков и собачек, но я также вкрутил туда несколько приколюх типа поддержка инлайн режима, смена языка и еще кое-что.

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

P. S. Это не реклама, это просто мой небольшой проект.
Новая рубрика

Недавно подписчица прислала мне код, и попросила опубликовать. И я тут подумал, что вообще говоря давно хотел создать новую рубрику с вашими работами.

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

Вот гитхаб с кодом:
Посмотреть код

Обратите внимание, код написан специально под windows

Да, теперь свои работы вы можете прислать мне, и я опубликую самое интересное.
Начинаем возвращать актив

Давно не было постов, и актив упал. Я занимался не пойми чем, чаще конечно просто работал, или занимался физикой (я обычно использую питон для анализа данных численных расчетов взаимодействия лазера с плазмой). Отмечу, мне ужасно надоели сухие посты, которые я обычно писал до этого. Да и времени это отнимало прилично, необходимо было найти нужную тему, изучить ее. Поэтому я решил попробовать написать что-нибудь от себя.

На днях я тут обдумывал вот что. Программирование для меня по большей части это удобный инструмент. Чаще всего сейчас уже не хочется ковыряться в кишках кодинга, чтобы понять какие-либо скрытые механизмы, не столь важные для работы в данный момент. Да и по большей части уже многое сделано, и не требуется написания чего-либо с нуля. Например, сейчас уже не нужно придумывать и писать с нуля свой движок для игры, как лет 15-20 назад. Достаточно взять готовое решение и можно начинать творить. Программирование по сути стало доступно простым людям (читай не специалистам).

Что касается data science, тоже все идет в сторону того, что люди создают удобные либы, из которых например можно в несколько строчек написать код для распознавания лиц. Ну или как тут (советую потестить).

Недавно открыл для себя крутую штуку. Ее кстати можно использовать не только в jupyter (я вообще его не использую, чаще всего нужно подключаться к кластеру с данными и запускать скрипты сразу на нем же, прямо в консоли), достаточно передать в tqdm итерируемый объект.

#мысли
Создатель языка программирования Python уходит на пенсию

Спустя шесть с половиной лет, нидерландский программист и создатель языка программирования Python Гвидо ван Россум, покидает Dropbox и уходит в отставку. Компания объявила об этом 29 октября. Кстати, самые первые строки для Dropbox были написаны на Python.

Во время работы в Dropbox Гвидо сосредоточился на нескольких направлениях, в том числе помог отладить процесс тестирования и создать систему проверки типов для Python, получившую название mypy. Также он ответственен за создание более лёгкого в поддержке кода, который могут быстро разбирать новые разработчики. По его словам, когда он только пришёл в Dropbox, там разработчики использовали «умный» код (clever code), который понимали только они.

Для стартапа создание «умного» кода кажется правильным, но по мере роста и расширения команды разработки такое решение уже не подойдёт, пояснил ван Россум.

Гвидо ван Россум создал язык программирования Python в 1989 году, когда работал в Центре математики и информатики Амстердамского университета. В 2005 году он устроился на работу в Google, а в конце 2012 года перешёл в Dropbox.

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

Мы предлагаем:
-Работу в молодом коллективе профессионалов. Команда – одна из наших самых больших гордостей
-Вилку по заработной плате – 20-40 тыс (руб)
-Сложные, но интересные задачи, безграничные возможности для развития
-Отсутствие бюрократии и настоящий дух стартапа

Чем предстоит заниматься:
-Писать алгоритмы для обработки поисковых запросов
-Добавлять в сайт интеграции с другими сервисами, например, авторизация и регистрация через Telegram или работа с API Яндекс.Вордстат
-Деплой на сервера Ubuntu

Навыки:
-Хорошее знание Python 3.5+
-Желателен опыт работы с фреймворками Django
-Опыт работы с Linux & Docker, PostgreSQL или MySQL, REST API, git или bitbucket

Контактная информация:
Контактное лицо: Диана Александровна Шорох
Телефон 8 (969) 0660033
E-mail: verizhnikova.natalya@bk.ru