Библиотека питониста | Python, Django, Flask
40.4K subscribers
2.8K photos
75 videos
51 files
4.38K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.me/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
🎲 Что делает функция seed() модуля random

random() возвращает разные значения каждый раз, когда вызывается. Однако иногда программам нужна воспроизводимость. В этих случаях можно использовать функцию seed() для инициализации псевдорандомного генератора. Он будет возвращать один и тот же набор ожидаемых значений.

Дело в том, что при вызове random.seed с определённым значением, устанавливается начальное состояние алгоритма генерации. Это значение используется для создания первого числа в последовательности.

➡️Пример:

import random

random.seed(1)

for i in range(5):
print('{:04.3f}'.format(random.random()), end=' ‘)


seed() передаётся объект. Если не указывать аргумент, то по умолчанию будет использоваться текущее время. Если передать не число, а строку, то функция преобразует её в int.

#код
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122
💬 Как вы считаете, нужен ли PEP 736?

В сообществе Python идут споры о новом предложении по синтаксису аргументов. PEP 736 предлагает заменить конструкцию f(x=x) на f(x=) в случаях, когда именованный аргумент совпадает с именем переменной, соответствующей его значению. 

Вот пример. Вместо:

my_function(
my_first_variable=my_first_variable,
my_second_variable=my_second_variable,
my_third_variable=my_third_variable,
)


следует писать:

my_function(my_first_variable=, my_second_variable=, my_third_variable=)


❤️ — одобряю PEP 736
🤔 — мне не нравится

#интерактив
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔21981👍6😁2
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
🥱3👍2🤔21
🧩 Как разместить резюме на GitHub Pages?

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

🧙‍♂️ Из преимуществ:

Размер сайта — до 1 Гб.
Объем трафика — 100 Гб в месяц.
Количество сборок в час — до 10.

Но, вместе с плюсами, есть и минусы. О них и обо всём другом в статье 👇

🔗 Читать статью
🔗 Зеркало
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🍊Подборка лучших статей «Библиотеки программиста» за декабрь: сохраняй в заметки, чтобы не пропустить #самыйсок

🐍📋 F-строки в Python для интерполяции и форматирования строк
🐍🤖✍️ Документирование кода и проектов на Python с помощью ChatGPT
🔟🏢 ТОП-10 российских IT-работодателей
🤖 Машинное обучение: что это такое и как оно работает
📁💡Где программисту взять идеи для портфолио
🌎 ТОП-10: рейтинг лучших зарубежных работодателей в IT
🐍⚙️ Python или Rust: что выбрать для анализа данных и машинного обучения
🐍🧫 Создаём игру «Жизнь» Джона Конвея на Python
🧠🧩 Зачем айтишнику психолог?
😺🐙 Как разобраться в Git: краткая инструкция для джунов
👨‍🎓 14 бесплатных ресурсов, которые пригодятся каждому разработчику
⚙️📕 Ответы на вопросы для самопроверки из книги «Тестирование Дот Ком» Романа Савина
🎄🎁 10 абсурдных подарков программисту на Новый год
✍️ Почему отсутствие технической документации убьёт ваш проект?
5👍5🥱1
🐰 Никаких фигурных скобок: очередная пасхалка в Python

Если попытаться выполнить следующий код:
from __future__ import braces

то выведется ошибка SyntaxError: not a chance

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

👉Дело в том, что модуль future позволяет импортировать в старый код обратно несовместимые функции (например истинное деление, появившееся в Python 3.0). Таким образом, «not a chance» однозначно даёт понять, что в Python никогда не будут введены фигурные скобки.
18😁11👍6
🐍 Ловушки, в которые попадают неопытные Python-разработчики

Автор The Hitchhiker's Guide to Python перечисляет распространённые ошибки, которые часто допускают новички.

🚫Одна из таких — изменяемый аргумент по умолчанию
Допустим, вы пишете функцию:


def append_to(element, to=[]):
to.append(element)
return to


И вот, что вы ожидаете увидеть:


my_list = append_to(12)
print(my_list) # -> [12]

my_other_list = append_to(42)
print(my_other_list) # -> [42]


Однако на самом деле вывод будет таким:
[12]
[12, 42]

Список создаётся единственный раз при определении функции, поэтому при каждом последующем вызове он уже не будет пустым.

Лучше делать так:


def append_to(element, to=None):
if to is None:
to = []
to.append(element)
return to


О других ловушках читайте в статье 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍314👏1
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»

Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!

🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
🔥30👍8❤‍🔥3
👨‍💻 Лучшие практики проектирования REST API

Автор статьи перечисляет правила, каждое из которых охватывает определённый аспект проектирования API. Вот несколько правил:

✔️Используйте множественное число для названий коллекций
# Хорошо:
GET /products # get all the products
GET /products/{product_id} # get one product

# Плохо:
GET /product/{product_id}
✔️Не добавляйте .json или другие расширения к URL-адресу
✔️Не возвращайте массивы как ответы верхнего уровня
Оборачивайте их в объекты.
# Хорошо:
GET /things returns:
{ «data»: [{ ...thing1...}, { ...thing2...}] }

# Плохо
GET /things returns:
[{ ...thing1...}, { ...thing2...}]
✔️Используйте строки для всех идентификаторов

# Хорошо:
{ «id»: «123» }

# Плохо:
{ «id»: 123 }

👉Остальные советы читайте в статье
👍7🔥2
👀 Расскажите про области видимости переменных в Python

Область видимости — это контекст в коде, где определённые переменные доступны для использования. В Python есть несколько областей видимости.

🔸 Локальная
Локальные переменные инициализируются вместе с функцией и уникальны для неё. Они недоступны за пределами функции.
🔸 Глобальная
Такие переменные определены на уровне скрипта. Доступны в любом месте кода после их определения.
🔸 Нелокальная (Python Nonlocal keyword)
Появилась в Python 3. Нелокальные переменные чаще всего находятся во вложенной функции и не являются локальными или глобальными. Они доступны лишь в функции, которая их окружает. Вот пример:
def get_candy():
candy = 5
def increment_candy():
nonlocal candy
candy += 1
return candy
return increment_candy

#вопросы_с_собеседований
👍26
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🏖️ Синдром упущенного отпуска: почему так опасно игнорировать заслуженный отдых

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

🔗 Читать статью
🔗 Зеркало
9👍7😁1🥱1
Почему all([]) — это True, а math.prod([]) — 1

Иногда Python делает неожиданные вещи с пустыми списками. Можете скопировать и проверить сами:

import math
print(all([]))
print(math.prod([]))


Это поведение может быть объяснено как следствие одного математического принципа. В математике есть такое понятие как моноид — множество с нейтральным элементом (identity) и бинарной ассоциативной операцией. Если мы говорим об операции умножения, то нейтральным элементом будет 1, так как любое число, умноженное на единицу, равно самому себе.

В Python для prod в качестве identity выступает 1, для sum — 0, для all — True, а для any — False. Эти операции соответствуют принципу моноидов, возвращая identity при работе с пустыми списками.

Некоторые операции, такие как max, не могут быть определены для пустых списков, поскольку у них нет identity. Более подробно читайте об этом в статье
👍262
Interview_Questions_For_Python.pdf
885.2 KB
🐍 Сборник вопросов и ответов для собеседования по Python

Шпаргалка от сайта InterviewBit, включающая следующие разделы:
▪️вопросы для новичков (например, «что такое срезы»)
▪️вопросы для более опытных разработчиков («как скопировать объект»)
▪️ООП
▪️Pandas
▪️Numpy
▪️Разные модули
▪️Задачи на написание кода
👍21
🛠️ Подборка свежих Python-библиотек и инструментов

🌐 Netchecks
Инструмент для автоматизации проверки соответствия сетевых условий ожидаемым параметрам. Эти проверки могут быть примитивными, например, скрипт может регулярно пытаться получить доступ к сервису, который должен быть заблокирован. Netchecks упрощает этот процесс, позволяя объявлять такие проверки декларативным способом.
😺 Cyclopts
Это фреймворк для создания интерфейса командной строки (CLI, Command-Line Interface) на Python. Предлагает продвинутые функции для работы с типами данных и автоматически генерирует красивые и понятные сообщения справки.
🦅 Falco
Инструмент, ориентированный на фреймворк Django, для улучшения опыта разработки веб-приложений. Предоставляет интерфейс командной строки, который включает команды для запуска новых проектов на Django и генерации простых CRUD для быстрого прототипирования.
🪄 Marker
Инструмент для превращения PDF, EPUB и MOBI в markdown-файлы. Разработчики утверждают, что он в 10 раз быстрее, чем nougat, точнее на большинстве документов и мало галлюцинирует.
🐦‍⬛ TaskWeaver
Фреймворк для автономных агентов, предназначенный для планирования и выполнения задач аналитики данных. По факту, это чат, в котором можно просить у бота написать код, провести операции с данными и сделать аналитику.
👍12🔥31
💬 Начните писать в комментариях фразу «Как Python-разработчик я хочу...», а Т9 пусть продолжит за вас.

#интерактив
10🥰5😁4
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍5
💁 Как внедрить многоязычность в Telegram-бота оптимальным образом

Автор новой статьи на «Хабре» делится своим опытом создания многоязычного бота. Его целью было упростить процесс добавления новых языков и сделать это с минимумом затрат. Вот основные моменты:

▫️Следует избегать внесения текстов непосредственно в код бота. Весь текстовый контент организован через переменные, чтобы легко управлять языковыми версиями.
▫️Можно создать по словарю на каждый язык, в котором ключами будут названия переменных, а значениями — текст для интерфейса.

По мере развития бота проект перешёл на модульно-сервисную архитектуру. Как был решён вопрос с многоязычностью, читайте в статье 👈
👏10👍2🤔2
🐍Функции как объекты в Python

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

✔️Пример ниже даёт понять сущность функций как объектов:


def factorial(n):
"""returns n!"""
return 1 if n<2 else n*factorial(n-1)

print(factorial(42)) # -> 1405006117752879898543142606244511569936384000000000
print(factorial.__doc__) # -> returns n!
print(type(factorial)) # -> <class 'function’>


▶️Следствием этого являются функции высшего порядка. Так называют функции, которые выполняют одно (или оба) из этих действий:
- принимают одну (и более) функций в качестве аргументов;
- возвращают функцию в качестве результата.
Вот пример:


def apply_twice(func, arg):
return func(func(arg))

def multiply_by_two(x):
return x * 2

result = apply_twice(multiply_by_two, 3)
print(result) # Выведет 12, так как (3 * 2) * 2 = 12
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🤩43
📊Статистика на примерах с Python

Для работы с данными в Python чаще всего используют библиотеки NumPy, Pandas, Matplotlib, SciPy. Автор новой статьи на «Хабре» показывает полезные методы из этих библиотек на примере датасета Titanic. Вот, например, меры центральной тенденции в SciPy:

# превращение списка в массив NumPy и удаление всех nan
age_without_nan = age.to_numpy()
age_without_nan = age1[~np.isnan(age_without_nan)]
# вычисление моды
mode = scipy.stats.mode(age_without_nan)
print('Мода =', mode)
# вычисление медианы
median = scipy.ndimage.median(age_without_nan)
print('Медиана =', median)
# вычисление среднего
mean = scipy.mean(age_without_nan)
print('Среднее значение =', mean)


Ещё больше информации можно найти в статье 👈
👍152
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤖 Итоги недели в мире ИИ и обзоры новых сервисов

Мы написали статью на VC, которая основана на очередном выпуске нашей рассылки про последние новости и тенденции в мире ИИ. Залетайте и читайте!

👇Ниже — мини-подборка из статьи 👇

📰 Новости

▫️ OpenAI объявила о запуске долгожданного магазина кастомных чат-ботов.
▫️ В Пасадене (штат Калифорния) открывается первая закусочная CaliExpress by Flippy, полностью управляемая ИИ.
▫️ NVIDIA выпустила модель для распознавания речи Parakeet, которая по всем показателям превосходит OpenAI Whisper.
▫️ Использование ИИ в совместном научном проекте Microsoft и Тихоокеанской северо-западной национальной лаборатории в течение недели помогло определить новый элемент, который поможет снизить на 70% использование лития в батареях. Без ИИ такое исследование заняло бы по меньшей мере 20 лет.
▫️ Компания ByteDance выпустила новую модель MagicVideo-V2 для генерации видео.

🛠 Инструменты

◾️ Auto Wiki — генерирует вики-документацию для GitHub репозиториев.
◾️ Code to Flow — визуализирует, анализирует и объясняет код, написанный на всех популярных языках и фреймворках.
◾️ Concepto — платформа для создания прототипов веб-приложений.
◾️ Afforai — выполняет суммаризацию, перевод и поиск по множеству документов.
◾️ Corgea — исправляет уязвимые фрагменты кода.
◾️ Jan — опенсорсный оффлайновый чат-бот.
◾️ Plus AI — плагин для Google Slides: делает профессиональные презентации, персональные и командные дашборды, любые отчеты.

🤙 Сделай сам

🔸 WikiChat — опенсорсный инструмент для коррекции галлюцинаций с помощью информации из Википедии.
🔸 Подробная шпаргалка и советы по созданию продвинутых RAG.
🔸 OpenVoice — опенсорный инструмент для мгновенного клонирования голоса.

🎓 Туториалы

🔹 Туториал по работе с новым API Query Pipelines показывает примеры создания простых линейных цепочек и сложных ациклических графов из модулей LlamaIndex.
🔹 Туториал по объединению LLM с помощью mergekit детально разбирает 4 основных метода объединения моделей.

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍3