Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

+1 128новых вакансий за сутки·93 813вакансий открыто сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 269
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 410 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 196
  • Облачные технологии14 160
  • QA вакансии3 451
  • Backend вакансии2 107
  • Инженер данных1 800
  • Продакт-менеджер1 247

Разработка

  • Android1 855
  • iOS1 695
  • Fullstack вакансии995
  • AI вакансии952
  • Frontend вакансии751
  • Mobile вакансии43

По стеку

  • Go8 754
  • Java6 595
  • Node.js2 038
  • .NET1 738
  • Kotlin1 617
  • Rust1 473
  • C#718
  • PHP692
  • C++582

DevOps и инфраструктура

  • Kubernetes7 778
  • DevOps вакансии6 088
  • Linux-инфраструктура5 502
  • Terraform / IaC4 276
  • CI/CD3 275
  • Мониторинг и Observability1 793
  • SRE563
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 141
  • Бизнес-аналитик921
  • Аналитик данных860
  • Системный аналитик154

Другие направления

  • Проджект-менеджер621
  • UI/UX дизайн148
  • Ручное тестирование14

По регионам

  • Вакансии в США44 164
  • Вакансии в Европе24 016
  • Вакансии в Канаде4 533
  • Работа в России3 837

По формату

  • Удалённые вакансии75 134
  • Релокация в США44 163
  • Гибридная работа12 456
  • Офисная работа7 066

По уровню

  • Senior вакансии42 633
  • Middle вакансии20 971
  • Junior вакансии6 706

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме PythonВсе вопросы
PythonJuniorТеория

В чём разница между *args и **kwargs?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

*args собирает позиционные аргументы в кортеж, **kwargs — именованные в словарь; используйте *args для вариативного числа однородных значений, **kwargs для опциональных настроек или forwarding-обёрток.

Базовые примеры

def total(*args: float) -> float:
    """Сумма любого числа слагаемых."""
    return sum(args)


print(total(1, 2, 3))       # 6
print(total())              # 0  — пустой кортеж не вызывает ошибку


def configure(**kwargs: str) -> dict[str, str]:
    """Принять произвольный набор настроек."""
    allowed = {"host", "port", "db"}
    unknown = set(kwargs) - allowed
    if unknown:
        raise ValueError(f"Unknown keys: {unknown}")
    return kwargs


print(configure(host="localhost", db="prod"))  # {'host': 'localhost', 'db': 'prod'}

Механизм *args и **kwargs

*args позволяет функции принять произвольное количество позиционных аргументов; внутри функции они доступны как tuple. **kwargs принимает произвольные именованные аргументы и представляет их как dict[str, Any]. Имена args и kwargs — соглашение, а не синтаксическое требование.

Совместное использование

def log(level: str, *messages: str, sep: str = " ", **meta: str) -> None:
    print(f"[{level}]", sep.join(messages), meta)


log("INFO", "user", "logged in", sep="|", user_id="42", ip="1.2.3.4")
# [INFO] user|logged in {'user_id': '42', 'ip': '1.2.3.4'}

Порядок параметров строго: обычные позиционные → *args → keyword-only → **kwargs.

Forwarding и декораторы

from functools import wraps
from typing import Any, Callable, TypeVar

F = TypeVar("F", bound=Callable[..., Any])


def retry(times: int = 3) -> Callable[[F], F]:
    def decorator(fn: F) -> F:
        @wraps(fn)
        def wrapper(*args: Any, **kwargs: Any) -> Any:
            for attempt in range(1, times + 1):
                try:
                    return fn(*args, **kwargs)
                except Exception as exc:
                    if attempt == times:
                        raise
                    print(f"Retry {attempt}/{times} after {exc}")
        return wrapper  # type: ignore[return-value]
    return decorator


@retry(times=3)
def fetch_data(url: str, timeout: float = 5.0) -> bytes:
    raise ConnectionError("no route")

Unpacking при вызове

def connect(host: str, port: int, db: str) -> str:
    return f"{host}:{port}/{db}"


args = ("localhost", 5432)
kwargs = {"db": "jobstream"}
print(connect(*args, **kwargs))  # localhost:5432/jobstream

Подводные камни

  • Функция с *args теряет явную сигнатуру — IDE и mypy не смогут проверить типы аргументов без аннотаций TypeVarTuple (Python 3.11+).
  • **kwargs принимает только строковые ключи; попытка передать нестроковый ключ через **{1: 'x'} вызовет TypeError.
  • Мутабельные значения по умолчанию (def f(x=[]):) — отдельная ловушка; **kwargs её не устраняет, если вы сами создаёте изменяемые defaults.
  • Порядок: если поставить **kwargs перед *args — SyntaxError.
  • Чрезмерное использование **kwargs в публичном API скрывает контракт функции и усложняет рефакторинг.
  • При наследовании и super().__init__(*args, **kwargs) легко случайно «проглотить» лишний аргумент, не вызвав ошибки.
  • *args внутри функции — неизменяемый кортеж; если нужен список, явно конвертируйте: items = list(args).

Частые вопросы на собеседовании

  • Что такое truthy и falsy значения в Python?
  • Когда использовать threading?
  • Что такое type hints и зачем они нужны?
  • Как работает yield?

Типичные ошибки

  • Описывать args kwargs только как термин и не показывать механизм на минимальном примере.
  • Игнорировать ошибки, пустые данные, конкурентный доступ или границы транзакции.
  • Не связывать поведение с официальным контрактом Python и реальной эксплуатацией.

Что проверяет интервьюер

  • Объясняет args kwargs через последовательность действий, а не через набор ключевых слов.
  • Приводит короткий кодовый пример или production-сценарий с ожидаемым поведением.
  • Называет хотя бы один риск: производительность, безопасность, транзакции, память или сопровождение.

Как вы знаете этот вопрос?

Проверить себя по теме Python →

Источники

  • https://docs.python.org/3/tutorial/datastructures.html
  • https://docs.python.org/3/reference/datamodel.html

Связанные темы

Pythontechnical-reasoning

Вакансии с этим навыком

Python вакансии
  • Internship - Machine Learning and image-based EUV system setup
  • Internship-Optical Modeling and Simulation Engineering
  • Engineering Manager, Copilot
  • Test Engineer - Electric Propulsion, Satellites (Starlink)
  • Ingeniero de Machine Learning & Modelado