TGViewer
EasyData EasyData @data_easy · 1.38K subscribers
Post #302 1.27K
Привет, друзья!
Поздравляю с нашим профессиональным праздников - 256-м днём в году!
Пока вайбкодинг ещё не вытеснил программеров в Data Science, и пока Python играет одну из ключевых ролей, давайте освежим важные особенности языка, которые часто спрашивают даже у сеньоров на собеседованиях ✍️

1. Python со статической или динамической типизацией?
Напомним разновидности:

- Статическая типизация (C++, Java): тип переменной задаётся заранее и проверяется до запуска программы.
- Динамическая типизация (Python, JavaScript): тип переменной определяется во время выполнения программы - а именно, в момент присваивания. В Python это происходит при исполнении соответствующей строки кода (ведь он интерпретируемый), поэтому одна и та же переменная может в разные моменты хранить объекты разных типов.


2. Разница между генераторами и итераторами?
Вспомним, что итерируемый объект - это то, из чего можно последовательно доставать элементы (список, множество, строка).

Итератор - это «механизм перебора»: объект, который умеет по одному выдавать элементы итерируемого объекта. Для этого у него есть методы iter (возвращает сам итератор) и next возвращает следующий элемент)

Генератор — это удобный способ создать итератор. Его пишут через yield или в виде генераторного выражения. Главное отличие: генератор сам запоминает своё состояние между вызовами и продолжает работу с того места, где остановился.


3. В чем разница между yield и return?
return завершает функцию и возвращает одно значение.

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


4. А что такое декораторы и зачем они нужны?
Декоратор - это вызываемый объект (функция или класс с call), который принимает другую функцию или класс и возвращает «обёрнутую» версию. То есть позволяет добавлять новое поведение к функциям/классам без изменения их кода (примеры: логирование, кеширование, измерение времени работы фунции).


5. Какие бывают пространства имен в Python?
Есть четыре уровня пространств имён:
- Local (локальное внутри функции)
- Enclosing (это локальное пространство переменных внешней функции, к которому может обращаться внутренняя функция, если она определена внутри этой внешней)
- Global (глобальное внутри модуля)
- Built-in (встроенные объекты Python).

Запоминается по правилу LEGB.


6. Как передаются аргументы в функции - по значениям или по ссылке?
В Python аргументы передаются по ссылке на объект, но сами ссылки копируются. Если объект изменяемый (список, словарь) - изменения видны и снаружи функции. Если неизменяемый (int, str, tuple) - создаётся новый объект.


7. Как происходит управление памятью в Python?
Python управляет памятью автоматически: у каждого объекта есть счётчик ссылок - когда на объект больше нет активных ссылок, память освобождается сразу. Для циклических ссылок (когда объекты ссылаются друг на друга) работает отдельный garbage collector, который периодически запускается в фоне.


8. Что такое GIL и разрешена ли многопоточность в Python?
GIL (Global Interpreter Lock) - это глобальная блокировка интерпретатора, которая не позволяет одновременно выполнять код в нескольких потоках. Поэтому для CPU-ограниченных задач многопоточность в Python не даёт прироста. Но она хорошо работает для задач ввода-вывода (I/O) и для вычислений внутри библиотек, реализованных на C/C++ (NumPy или Faiss), которые обходят GIL.


9. Что такое дескриптор?
Дескриптор - это объект с методами set/get/delete который управляет доступом к атрибуту другого класса. На дескрипторах реализованы property, методы класса, статические методы.


10. Как работает менеджер контекста with под капотом?
Менеджер контекста - это объект, у которого определены методы enter и exit. При входе в блок with вызывается enter, при выходе - exit, что гарантирует корректное освобождение ресурсов (например, закрытие файла).


Кто все и так знал - ставьте 🐳

#python@data_easy
  • ❤ 26
  • 🔥 11
  • 🐳 7
  • 🎉 3
  • 👍 1
  • 🏆 1
More from @data_easy
  1. Sep 25, 2026Привет, друзья! Давайте разберём, как оценивать RAG-пайплайн. Тема довольно острая: наприм…
  2. Sep 20, 2026Привет, друзья! Adam и AdamW правят балом почти десять лет... Претенденты на замену были,…
  3. Aug 30, 2026Привет, друзья! Автор возвращается с каникул с полным мешком пирожков полезных материалов…
  4. Jul 12, 2026Привет, друзья! Представьте: у вас есть паркет на 10 гигов, и надо всего лишь посчитать по…
  5. Jun 28, 2026Привет, друзья! Устали от стандартных учебников по ML? Материалов с каждым месяцем и правд…
  6. Jun 21, 2026Привет, друзья! Сегодняшний рассказ про marimo - реактивный блокнот для Python, который мн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →