Python: задачки и вопросы
7.67K subscribers
1.21K photos
2 videos
1 file
101 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
Что выведет код?
Anonymous Quiz
25%
True
59%
False
1%
None
15%
Error
1👍1👎1
Из документации Python:

Причина вывода False — разные типы данных:

🔘 Литерал с префиксом u создаёт объект типа 𝚜𝚝𝚛 (Unicode-строка);
🔘 Литерал с префиксом b создаёт объект типа 𝚋𝚢𝚝𝚎𝚜 (байтовая строка).

В Python 3 это принципиально разные типы. Сравнение 𝚜𝚝𝚛 == 𝚋𝚢𝚝𝚎𝚜 всегда возвращает False, даже если они визуально одинаковы, потому что объекты разных типов не равны.

В официальной документации Python указано:

«Байтовые литераты всегда сопровождаются префиксом b, это генерирует объект типа 𝚋𝚢𝚝𝚎𝚜, не 𝚜𝚝𝚛».

«Поддержка устаревшего Unicode-литерала (u'spam') была вновь введена для упрощения поддержки кода, работающего как на Python 2.x, так и на Python 3.x».
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1👎1
Из документации Python:

«При работе с JSON-файлами в текстовом формате используйте encoding="utf-8" при открытии файла для чтения и записи».

𝚏 = 𝚘𝚙𝚎𝚗('𝚠𝚘𝚛𝚔𝚏𝚒𝚕𝚎', '𝚠', 𝚎𝚗𝚌𝚘𝚍𝚒𝚗𝚐="𝚞𝚝𝚏-𝟾")

Почему вариант 1 — правильный

🔘Он непосредственно позволяет указать желаемую кодировку при чтении или записи файла.
🔘Это прямой и стандартный подход, предусмотренный в языке (без дополнительных преобразований вручную).

Другие варианты (например, str.encode() с записью байтов, использование JSON или pickle) не являются подходящими для создания текстового файла в нужной кодировке — они либо статичны, либо служат для других целей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
🪤 Что выведет код?
Anonymous Quiz
68%
1
6%
2
14%
3
11%
Error
2👍1👎1
Зацените как похорошели транскрибации при Войси!

Вайб-кодинг вайб-кодингом, но как же не хватает простого человеческого «расшифруй мне созвон, только качественно!!». С этим вам поможет Войси.

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

Самое удобное, что далеко ходить не надо — всё это делается прямо в «телеге». Экономьте своё время, превращая часы в минуты.

🔥А новичкам доступны 1,5 часа бесплатной транскрибации. Забирайте: https://tprg.ru/9xQo
👍1
🧩 Что выведет код?
Anonymous Quiz
48%
1
39%
2
11%
3
2%
Error
👍2👎1
Код демонстрирует работу оператора 𝚍𝚎𝚕 с методом __𝚍𝚎𝚕𝚊𝚝𝚝𝚛__, который автоматически вызывается при удалении атрибутов объекта.

Из документации Python:

«Оператор 𝚍𝚎𝚕 используется для удаления элементов из списков, переменных и атрибутов объектов».

В данном случае:

🔘 При выполнении 𝚍𝚎𝚕 𝚋𝚘𝚋.𝚗𝚊𝚖𝚎 интерпретатор автоматически вызывает метод __𝚍𝚎𝚕𝚊𝚝𝚝𝚛__.
🔘 В параметр 𝚊𝚝𝚝𝚛 передаётся имя атрибута 𝚗𝚊𝚖𝚎.
🔘 Метод выводит '𝚍𝚎𝚕: ' + 𝚊𝚝𝚝𝚛, то есть 𝚍𝚎𝚕: 𝚗𝚊𝚖𝚎.
🔘 Затем проверяется условие 𝚒𝚏 𝚊𝚝𝚝𝚛 == '𝚗𝚊𝚖𝚎' — оно истинно.
🔘 Переменная 𝚊𝚝𝚝𝚛 переназначается на '_𝚗𝚊𝚖𝚎' для работы с внутренним атрибутом.
🔘 Выполняется 𝚍𝚎𝚕 𝚜𝚎𝚕𝚏.__𝚍𝚒𝚌𝚝__[𝚊𝚝𝚝𝚛], что удаляет атрибут _𝚗𝚊𝚖𝚎 из словаря объекта.

Важно понимать, что метод __𝚍𝚎𝚕𝚊𝚝𝚝𝚛__ получает именно то имя атрибута, которое было указано в операторе 𝚍𝚎𝚕, а не внутреннее имя _𝚗𝚊𝚖𝚎. Это позволяет создавать "виртуальные" атрибуты, которые на самом деле управляют другими внутренними атрибутами объекта.
Please open Telegram to view this post
VIEW IN TELEGRAM