Zen of Python
20.1K subscribers
1.18K photos
160 videos
32 files
3.11K links
Полный Дзен Пайтона в одном канале

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
Задача коммивояжёра — точное решение через метод целочисленного линейного программирования

Если коротко, задача комивояжёра — это классический пул задач на поиск кратчайшего маршрута среди нескольких городов. Или маршрута по городу. В общем — это задачи о том, как принимать решения в ситуациях со множеством переменных.

Задачу коммивояжёра можно решить несколькими способами. Например, простым перебором. Но чем больше будет городов, тем медленнее будет расчёт. Уже на 10 городах мы получим миллионы выполнений цикла. А на 13 городах таких — уже несколько миллиардов, и компьютер может их считать неделю и даже больше.

Чуть более оптимальное решение — метод динамического программирования и метод ветвей и границ. Результат получается неплохой, но всё равно он слабоват.

Вот интересная статья, которая показывает, что точное решение этой задачи можно получить гораздо более оптимальным способом. Всё с понятными объяснениями и кодом на Python: https://habr.com/ru/post/711708/

#задачи
🤯11👍5🔥4
Пришла пора признать это
😁65👍17🔥7🤬1
Самые популярные вопросы на собеседовании: «В чем разница между списком и кортежем?»

С этого дня решил попробовать новую рубрику — вопросы с собеседований. В ней буду рассказывать о популярных вопросах и ответах на них. Такая минимальная посильная нагрузка, которая со временем поможет увереннее чувствовать себя в самый важный момент перед будущим тимлидом :)

И начнём с одного из самых простых, но самых частых вопросов с собеседований по Python/Data science. Его важно знать даже просто для себя.

Вот несколько отличительных черт кортежей и списков:
— Список можно изменить после создания. Кортеж — нельзя.
— Список упорядочен. Он представляет собой упорядоченные последовательности объектов часто одного и того же типа. Например, все имена пользователей упорядочены по дате создания: ["Seth", "Ema", "Eli"].
— У кортежа есть структура. В каждом индексе могут сосуществовать различные типы данных. Например, такая запись базы данных в памяти: (2, "Ema", "2020–04–16") # id, name, created_at.

#собеседование
👍62👎9
Как писать чистый и читаемый код на Python: 3 самых важных принципа

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

Подробнее: https://proglib.io/p/3-principa-napisaniya-chistogo-koda-na-python-2022-12-26

#советы
👍23💩2
5 лучших ресурсов для изучения Python

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

Админ всё понимает, поэтому делится лучшими ресурсами, которые помогут прокачаться в Python. Некоторые из них уже мелькали здесь, другие — объективно считаются лучшими ресурсами для изучения Python.

Так что сохраняйте себе и учитесь на здоровье:

1. Code Academy
Code Academy — это бесплатный учебный ресурс для изучения программирования. Там есть уроки по многим языкам, не только по Python. Удобно, что можно писать прямо в браузере и сразу смотреть результаты. Лучше всего подходит для начинающих и программистов среднего уровня.

2. TutorialsPoint
TutorialsPoint похож на Code Academy. Но база знаний TutorialsPoint больше — там есть и довольно сложные темы, такие как доступ к базам данных, CGI, игры, многопоточность, сети, дизайн и т. п.

3. Codementor.io
Codementor — платформа больше для разработчиков от среднего уровня до экспертов. А каждый пост на этом сайте — отдельное руководство по какой-либо теме, например, об интеграции Node.js с Python, использовании декораторов и т. п.

4. PythonChallenge
Сайт точно вам понравится, если вы не ищете легких путей и предпочитаете учиться, преодолевая трудности. Это не самый современный и красивый сайт. Но там вы найдёте отличные задачи и уроки, которые помогут вам в изучении Python.

5. Python Class от Google
Это — учебник по Python от Google. Материал в нём предназначен для опытных программистов. Здесь в основном теория, но написанная простым и доступным английским. Как вспомогательный материал для изучения Python точно подойдёт.

#подборка
👍274🔥2👏1
Разбираем Теорию Игр с Python-библиотеками nashpy и axelrod

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

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

И вот одна из немногих интересных статей на эту тему: https://habr.com/ru/post/713120/
👍12🔥3😁1
Что скажет ChatGPT: Почему Python такой популярный?

Кто-то с помощью ChatGPT пишет дипломы, кто-то — код, а мы попросили ChatGPT написать целую статью про то, как Python набирал популярность с 1990-х годов и почему стал популярен в Data Sceince, Machine Learning, веб-разработке и разработке игр.

Пока человеческий админ пошёл собирать вещи, посмотрите, как получается у ChatGPT писать целые статьи: https://tproger.ru/articles/pochemu-python-takoj-populjarnyj/

#chatgpt #ml
🤮6👍5🔥1
​Самые популярные вопросы на собеседовании: «Как выполняется обработка исключений в Python?»

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

Для обработки исключений Python предоставляет конструкцию из трех слов: try, except и finally.

Синтаксис выглядит примерно так:
try:
# пробуем это
except:
# если try не сработал, пробуем это
finally:
# в любом случае делаем это

Например, код:
try:
val = 1 + 'A'
except:
val = 10
finally:
print('complete')
print(val)

Выдаст:
#=> complete
#=> 10

Здесь блок try терпит неудачу, ведь мы не можем складывать целые числа со строками. Блок except устанавливает val = 10, а затем блок finally выводит complete.

#собеседование
🔥23👍11💩2
Стек технологий для Python

Просто небольшая заметка, где Senior Python Developer советует инструменты и технологии, которые повсеместно применяют разработчики на Python:

https://tproger.ru/articles/stek-tehnologij-dlja-python-sovetuet-jespert/

#начинающим #инструменты
👍5💩31
Внезапно, но сервис, в котором можно выучить «всё»

Просто вбиваете запрос и сервис выводит небольшой роадмап. Админ попробовал «питонические» запросы а-ля Python, Pandas и др. И это как минимум забавно. Но что интересно, там есть информация практически по любому запросу — пусть местами скудно, но всё равно есть.

В общем, попробуйте: https://learn-anything.xyz/

#инструменты
👍22👎2
Особенности семантики exactly-once при разработке для Kafka на Python

Exactly-once — это подход, при котором сообщение доставляется получателю строго один раз, без дублирования и потери данных.

В статье рассказали про особенности семантики exactly-once на примере разработки проекта на Kafka и Python для сортировки данных: https://tproger.ru/articles/osobennosti-semantiki-exactly-once-pri-razrabotke-dlja-kafka-na-python/
Подборка актуальных вакансий для Python-разработчиков:

Python-разработчик
Где: Москва
Опыт: от 3 лет

Специалист информационной безопасности ИТ-инфраструктуры
Где: Москва
Опыт: от 1 года

Senior Python-разработчик
Где: Москва
Опыт: от 3 лет

Middle DevOps Engineer (Big Data)
Где: Москва, можно удалённо
Опыт: от 3 лет

Data Engineer (Big Data)
Где: Москва, можно удалённо
Опыт: от 1 года

#вакансии #работа
💩16👍3
👍9🤔51🤯1
Каким будет результат выполнения кода выше?
Anonymous Quiz
27%
True
66%
False
3%
None
4%
Error
👍10
Объяснение:

Списки — изменяемый тип данных. Поэтому под два разных списка создаётся отдельный объект. Даже если их значения одинаковые
👍32
​Тестируем на Python: unittest и pytest

Ничего нельзя сделать без ошибок, и с программами — то же самое. Если вы написали рабочий код, как узнать, что будет при реальном использовании? Поведёт ли себя программа так, как от неё ожидают, или что-нибудь выкинет?

Именно поэтому при создании программ 75% времени уходит вовсе не на программирование, а как раз-таки на тесты. И если вы не хотите тратить время на тесты в самом начале, вы всё равно потратите его потом, только в большем количестве.

И вот отличная статья, в которой рассказывают, как правильно проводить тестирование приложений в Python, используя unittest и pytest:

https://tproger.ru/articles/testiruem-na-python-unittest-i-pytest-instrukcija-dlja-nachinajushhih/

#qa
👍18🔥1
Как устроена RecTools — OpenSource–библиотека для рекомендательных систем

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

Рассказываем о достоинствах и недостатках RecTools и как она может быть использована в ваших проектах: https://tprg.ru/CgJX

#ml
👍16👎1
​​Самые популярные вопросы на собеседовании: «В чем разница между is и ==?»

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

Если просто, то is проверяет идентичность, а == проверяет равенство. Чтобы лучше понять, создадим 2 списка, а переменной b присвоим значение списка a:
a = [1,2,3]
b = a
c = [1,2,3]

Если проверим равенство, то все объекты будут равны:
print(a == b) #=> True
print(a == c) #=> True

А вот если мы проверим их идентичность, то получается следующее:
print(a is b) #=> True
print(a is c) #=> False

Несмотря на одинаковое содержимое, сами списки представлены разными объектами в памяти, поэтому оператор is для одинаковых списков возвращает False. Проверить очень просто — у объектов будут разные идентификаторы:
print(id(a)) #=> 4369567560
print(id(b)) #=> 4369567560
print(id(c)) #=> 4369567624

Это всё, что нужно знать про is и == на базовом уровне. Но есть несколько лайфхаков и нюансов, которые помогут использовать эти операторы на полную катушку. О них расскажу чуть позже.

#собеседование
👍62🔥2🥰2💯2🐳1
Где полезна асинхронность в Python, а где — нет

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

Если вы новичок и ещё не разбирались в синхронном/асинхронном программировании, не слышали про параллелизм и не знаете, зачем все этим заумные слова придумали, это заметка поможет разобраться:

https://habr.com/ru/company/kts/blog/713084/

#начинающим
🔥84👍3
Forwarded from Типичный программист
С Днём Святого Валентина!
83👍16💩7🔥1