Некоторые SQL-грабли, на которые до сих пор наступают даже сеньоры (мне тоже иногда приходится лезть в доки и перепроверять):
1.
2.
3.
4.
5.
👉 @PythonPortal
1.
= NULL никогда не бывает true. Используй IS NULL / IS NOT NULL (трехзначная логика: true, false, unknown).2.
NOT IN (...) + один NULL в списке может вернуть ноль строк. Чаще безопаснее NOT EXISTS.3.
LEFT JOIN + фильтр в WHERE превращается в INNER JOIN. Фильтры по джойну клади в ON.4.
COUNT(col) пропускает NULL, а COUNT(*) нет. Из-за этого метрики потом “магически” не сходятся.5.
NULL ломает конкатенацию и сравнения. Используй COALESCE осознанно.Please open Telegram to view this post
VIEW IN TELEGRAM
👍35❤13
Немного базы Python:
Когда вы проходите циклом по итерируемому объекту, функция
В примере ниже обратите внимание на пробел между кавычками (
У
👉 @PythonPortal
print по горизонталиКогда вы проходите циклом по итерируемому объекту, функция
print печатает каждый элемент с новой строки. Это потому, что у print есть параметр end. По умолчанию значение этого параметра содержит символ перевода строки (end="\n"). Чтобы печатать в одну строку, нужно убрать перевод строки и заменить его на пустую строку (end="").В примере ниже обратите внимание на пробел между кавычками (
" "): он нужен, чтобы числа печатались с пробелами между ними. Если убрать пробел (""), числа выведутся слитно, вот так: 1367. Вот код, который это показывает:In [1]: my_list = [1, 3, 6, 7]
for number in my_list:
print(number, end=" ")
// 1 3 6 7
У
print есть еще один параметр: sep. Мы используем sep, чтобы задать, чем разделять выводимые значения. Ниже в качестве разделителя используется символ /:In [2]: print('12', '12', '1990', sep='/')
// 12/12/1990Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤9🤯3
Если ты только начинаешь с Python, остановись и внимательно посмотри
Не меняй список во время прохода по нему.
Когда ты модифицируешь список прямо во время итерации, итератор начинает путаться. Он не “знает”, что список изменился прямо у него под ногами.
Например, этот код сломан:
Здесь мы используем
Лучший способ сделать это: итерироваться по копии:
Когда ты проходишь по копии (поверхностной копии), индексы в исходной копии не меняются.
Еще лучше использовать list comprehension:
Никогда, ни при каких условиях не модифицируй список (или любую коллекцию) прямо во время итерации по нему. Итератор плохо переносит структурные изменения: он может пропускать элементы, обрабатывать один и тот же элемент дважды или (в некоторых случаях, например со словарями) выбрасывать
👉 @PythonPortal
Не меняй список во время прохода по нему.
Когда ты модифицируешь список прямо во время итерации, итератор начинает путаться. Он не “знает”, что список изменился прямо у него под ногами.
Например, этот код сломан:
items = [1, 2, 2, 3, 4]
for item in items:
if item == 2:
items.remove(item)
print(items)
# Output: [1, 2, 3, 4]
Здесь мы используем
remove(), чтобы удалить все двойки из списка. Но если посмотреть на вывод, одна 2 все равно осталась. Почему так происходит: когда ты удаляешь элемент из списка, все элементы справа сдвигаются влево. А цикл продолжает идти дальше. В итоге происходит вот что: находится и удаляется первая 2. Вторая 2 сдвигается на ее место. Цикл переходит к следующему индексу и пропускает эту 2.Лучший способ сделать это: итерироваться по копии:
for item in items[:]:
if item == 2:
items.remove(item)
print(items)
# Output: [1, 3, 4]
Когда ты проходишь по копии (поверхностной копии), индексы в исходной копии не меняются.
Еще лучше использовать list comprehension:
items = [x for x in items if x != 2]
Никогда, ни при каких условиях не модифицируй список (или любую коллекцию) прямо во время итерации по нему. Итератор плохо переносит структурные изменения: он может пропускать элементы, обрабатывать один и тот же элемент дважды или (в некоторых случаях, например со словарями) выбрасывать
RuntimeError. Это плохая практика.Please open Telegram to view this post
VIEW IN TELEGRAM
❤32👍14🔥6🤣1
Google раздал шума: в Chrome выкатили ранний превью WebMCP, и это приподносят как замену веб-скрейпингу
Теперь любой сайт может стать нативным инструментом для AI-агентов.😶
👉 @PythonPortal
Теперь любой сайт может стать нативным инструментом для AI-агентов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯21❤9🤔1😢1
Немного базы Python. День 2: cлияние словарей
Если у тебя есть два словаря, которые нужно объединить, это можно сделать двумя простыми способами. Можно использовать оператор merge (
1️⃣ Использование оператора merge (
Вывод:
2️⃣ Метод 2: использование оператора merge (
С этим оператором нужно поместить словари внутрь фигурных скобок. В коде ниже мы “подставляем” два словаря для объединения с помощью двух операторов
Вывод:
👉 @PythonPortal
Если у тебя есть два словаря, которые нужно объединить, это можно сделать двумя простыми способами. Можно использовать оператор merge (
|) или оператор (**). Ниже у нас есть два словаря: first_dict и second_dict. Мы будем использовать эти два метода, чтобы объединить словари. Вот код:|)first_dict = {"kelly": 23,
"Derick": 14, "John": 7}
second_dict = {"Ravi": 45, "Mpho": 67}
combined_dict = first_dict | second_dict
print(combined_dict)Вывод:
{'kelly': 23, 'Derick': 14, 'John': 7, 'Ravi': 45, 'Mpho': 67}**)С этим оператором нужно поместить словари внутрь фигурных скобок. В коде ниже мы “подставляем” два словаря для объединения с помощью двух операторов
*. Оба словаря заключены в фигурные скобки и разделены запятой.first_dict = {"kelly": 23,
"Derick": 14, "John": 7}
second_dict = {"Ravi": 45, "Mpho": 67}
combined_dict = {**first_dict, **second_dict}
print(combined_dict)Вывод:
{'kelly': 23, 'Derick': 14, 'John': 7, 'Ravi': 45, 'Mpho': 67}Please open Telegram to view this post
VIEW IN TELEGRAM
❤32👍8🔥3🤝1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣57😁4
На Stepik добавили курс «Linux с нуля»
Этот курс закрывает всю обязательную Linux-базу для работы в IT. Подойдёт для:
Внутри 20+ модулей: от установки Linux и работы с файлами до сетей, прав, дисков, процессов, автоматизации на Bash и многого другого. Всё сразу закрепляется на практике (200+ заданий с автопроверкой)
Материал подаётся понятным языком, шаг за шагом, на реальных примерах и с наглядными схемами
После прохождения вы получите сертификат, который можно добавить в резюме.
В ближайшие 48ч курс доступен со скидкой 30% по промокоду «
Этот курс закрывает всю обязательную Linux-базу для работы в IT. Подойдёт для:
- разработчиков
- девопсов и админов
- специалистов по данным и ML
- специалистов поддержки и сопровождения
- тестировщиков и безопасников
Внутри 20+ модулей: от установки Linux и работы с файлами до сетей, прав, дисков, процессов, автоматизации на Bash и многого другого. Всё сразу закрепляется на практике (200+ заданий с автопроверкой)
Материал подаётся понятным языком, шаг за шагом, на реальных примерах и с наглядными схемами
После прохождения вы получите сертификат, который можно добавить в резюме.
В ближайшие 48ч курс доступен со скидкой 30% по промокоду «
23LINUX30»: открыть курс на Stepik🤔6❤3😁1🌚1🤣1
Ускорь JSON-ответы FastAPI в 2 раза, а то и больше
1. Обновись до только что вышедшего FastAPI 0.131.0
2. Объявляй response model (тип возврата)
После этого🦀
https://fastapi.tiangolo.com/advanced/custom-response/#json-performance
👉 @PythonPortal
1. Обновись до только что вышедшего FastAPI 0.131.0
2. Объявляй response model (тип возврата)
После этого
@pydantic будет заниматься JSON-сериализацией на стороне Rust https://fastapi.tiangolo.com/advanced/custom-response/#json-performance
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤3🔥3🌚2
Немного базы. День 3: Календарь в Python
В Python есть встроенный модуль
Допустим, мы хотим посмотреть апрель 2022 года. Мы используем класс
Есть ещё много всего, что можно сделать с
👉 @PythonPortal
В Python есть встроенный модуль
calendar. Мы можем импортировать этот модуль, чтобы вывести календарь. С календарём можно делать много разных вещей.Допустим, мы хотим посмотреть апрель 2022 года. Мы используем класс
month из модуля calendar и передадим год и месяц в качестве аргументов. См. ниже:import calendar
month = calendar.month(2022, 4)
print(month)
Есть ещё много всего, что можно сделать с
calendar. Например, с его помощью можно проверить, является ли заданный год високосным или нет. Давай проверим, високосный ли 2022 год.import calendar
month = calendar.isleap(2022)
print(month)
False
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍11
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29❤3😁3👀3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Совет для AI-инженеров 💡
Небольшая VLM, дообученная на вашем кастомном датасете, по точности может быть на уровне GPT-5 и при этом стоит в 50 раз дешевле.
Например, LFM2.5-VL-1.6B от Liquid Ai можно гонять локально на полной скорости через llama.cpp ↓
- Python CLI пример
👉 @PythonPortal
Небольшая VLM, дообученная на вашем кастомном датасете, по точности может быть на уровне GPT-5 и при этом стоит в 50 раз дешевле.
Например, LFM2.5-VL-1.6B от Liquid Ai можно гонять локально на полной скорости через llama.cpp ↓
- Python CLI пример
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍5❤3