Что выведет код?
Anonymous Quiz
19%
build, 5 [1, 9]
29%
build, 10 []
23%
build, 14 [1, 4, 9]
29%
Error
Каким будет вывод этого кода в консоли?
Anonymous Quiz
19%
'sun'
2%
'u'
64%
Или 's', или 'u', или 'n'
9%
Ошибка
6%
Посмотреть ответ
🐍 Python Pop Quiz: что окажется внутри `silly_dict`?
Вопрос звучит просто, но тут ловушка в том, как Python работает с ключами словаря.
Варианты:
A)
B)
C)
D) None of the above
Суть в том, что ключи в
Если объект пользовательского класса имеет такой же хеш, как строка
В таком случае новое значение просто перезапишет старое.
Ответ: B) `{"py": 10}`
Маленький пример, но отлично показывает важную вещь: в Python ключ словаря - это не “текстовое имя”, а объект с правилами хеширования и сравнения.
Вопрос звучит просто, но тут ловушка в том, как Python работает с ключами словаря.
Варианты:
A)
{"py": "amazing"} B)
{"py": 10} C)
{"py": "amazing", <__main__.MyClass object at ...>: 10} D) None of the above
Суть в том, что ключи в
dict сравниваются не по тому, как они выглядят в коде, а через __hash__ и __eq__.Если объект пользовательского класса имеет такой же хеш, как строка
"py", и при сравнении считается равным этой строке, то Python решит: это один и тот же ключ.В таком случае новое значение просто перезапишет старое.
Маленький пример, но отлично показывает важную вещь: в Python ключ словаря - это не “текстовое имя”, а объект с правилами хеширования и сравнения.
Каким будет вывод этого кода?
Anonymous Quiz
4%
[3, 2, 4]
12%
[2, 3, 4]
72%
[3, 4, 2]
5%
Ошибка
7%
Посмотреть ответ
Каким будет вывод этого кода?
Anonymous Quiz
56%
first=H, third=L
10%
first=0, third=2
6%
first=0, third=L
18%
Ошибка
10%
Посмотреть ответ
Каким будет вывод этого кода, если в качестве инпута передать цифру 6?
Anonymous Quiz
44%
Bye (1 раз)
9%
Invalid (1 раз)
42%
Bye (бесконечное количество раз)
2%
Вывода не будет
3%
Посмотреть ответ
🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы.
Stepik: «Python современный AI для разработчика и автоматизации задач»
63 урока, 382 шага, практика с кодом и автопроверкой.
Внутри: RAG, tool calling, агенты, evals, MCP, Ollama, vLLM, pgvector + HNSW, безопасный text-to-SQL, prompt injection, кэш, очереди и sandbox для агентного кода.
Плюс реальные автоматизации: почта, отчёты, боты, вебхуки и браузерные сценарии.
Для тех, кто уже знает Python и хочет перейти к production AI.
⏳ 72 часа скидка 55%
https://stepik.org/a/295921
Stepik: «Python современный AI для разработчика и автоматизации задач»
63 урока, 382 шага, практика с кодом и автопроверкой.
Внутри: RAG, tool calling, агенты, evals, MCP, Ollama, vLLM, pgvector + HNSW, безопасный text-to-SQL, prompt injection, кэш, очереди и sandbox для агентного кода.
Плюс реальные автоматизации: почта, отчёты, боты, вебхуки и браузерные сценарии.
Для тех, кто уже знает Python и хочет перейти к production AI.
⏳ 72 часа скидка 55%
https://stepik.org/a/295921
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Python считает эти даты равными. Хотя между ними целый час
В ночь перевода часов время 02:30 наступает дважды:
Это разные моменты:
Но Python выдаёт:
Причина: если у двух
Из-за этого дедупликация может принять два платежа, заказа или события за одно.
Для сравнения реальных моментов переводите время в UTC:
Используйте
https://docs.python.org/3/library/datetime.html
https://peps.python.org/pep-0495/
В ночь перевода часов время 02:30 наступает дважды:
from datetime import datetime, UTC
from zoneinfo import ZoneInfo
tz = ZoneInfo("Europe/Berlin")
a = datetime(2026, 10, 25, 2, 30, tzinfo=tz, fold=0)
b = datetime(2026, 10, 25, 2, 30, tzinfo=tz, fold=1)
print(a)
# 2026-10-25 02:30:00+02:00
print(b)
# 2026-10-25 02:30:00+01:00
Это разные моменты:
a = 00:30 UTC
b = 01:30 UTC
Но Python выдаёт:
a == b # True
b - a # 0:00:00
len({a, b}) # 1
Причина: если у двух
datetime один объект tzinfo, при сравнении Python игнорирует смещение и fold.Из-за этого дедупликация может принять два платежа, заказа или события за одно.
Для сравнения реальных моментов переводите время в UTC:
a_utc = a.astimezone(UTC)
b_utc = b.astimezone(UTC)
a_utc == b_utc
# False
(b_utc - a_utc).total_seconds()
# 3600.0
Используйте
astimezone(UTC). Метод replace(tzinfo=UTC) только заменяет метку и не пересчитывает время.https://docs.python.org/3/library/datetime.html
https://peps.python.org/pep-0495/