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

+1 582новые вакансии за сутки·92 562вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 105
  • Облачные технологии14 068
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 796
  • Продакт-менеджер1 248

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

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

  • Kubernetes7 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

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

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США43 686
  • Вакансии в Европе23 668
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 889
  • Релокация в США43 686
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

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

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

Чем positional-only, positional-or-keyword и keyword-only arguments отличаются друг от друга?

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

До / — positional-only (нельзя по имени), после * — keyword-only (нельзя позиционно), между ними — обычные positional-or-keyword. / появился в Python 3.8 (PEP 570), * — давно. Используйте для контроля API: positional-only защищает имена параметров, keyword-only — флаги.

Три категории параметров

Сигнатура функции в Python состоит из трёх зон, разделённых двумя маркерами:

def f(pos1, pos2, /, pos_or_kw, *, kw1, kw2):
    ...
#       ↑                ↑           ↑
#  positional-only    обычные    keyword-only
  • До /: positional-only (PEP 570, Python 3.8+). Можно передавать ТОЛЬКО позиционно. Имя параметра — внутренняя деталь, его можно менять без слома API.
  • Между / и *: positional-or-keyword (обычные). Можно так и так.
  • После * (или *args): keyword-only. Можно передавать ТОЛЬКО по имени.

Пример

def connect(host, port, /, db="postgres", *, timeout=5, ssl=False):
    return {"host": host, "port": port, "db": db, "timeout": timeout, "ssl": ssl}


# OK: host/port позиционно; db — любым способом; timeout/ssl — только по имени
print(connect("localhost", 5432))
print(connect("localhost", 5432, "users", timeout=10))
print(connect("localhost", 5432, db="users", ssl=True))

# Ошибки:
try:
    connect(host="localhost", port=5432)
except TypeError as e:
    print(e)  # got some positional-only arguments passed as keyword arguments

try:
    connect("localhost", 5432, "users", 10)  # timeout позиционно — нельзя
except TypeError as e:
    print(e)  # takes from 2 to 3 positional arguments but 4 were given

Зачем positional-only

  • Защита имён параметров от API-зависимости. str.replace(self, old, new, count=-1, /) — можно переименовать old без слома существующих вызовов.
  • Совместимость с C API: builtin функции (например len(obj, /)) исторически positional-only.
  • Когда имя параметра в сигнатуре длинное/некрасивое, а пользователю позиции достаточно: round(number, ndigits=None, /).

Зачем keyword-only

  • Boolean флаги — самое важное применение: sorted(items, *, reverse=True) читается, sorted(items, True) — нет.
  • Когда у функции много опциональных параметров — заставляйте указывать имя для ясности и защиты от перестановки.
  • Forward-совместимость: вы добавите новый keyword-only параметр без риска поломать существующие позиционные вызовы.

Реальные примеры из stdlib

from collections import deque
# deque(iterable=(), maxlen=None) — maxlen keyword

# json.dumps(obj, *, skipkeys=False, ensure_ascii=True, ...)
# Все настройки сериализации — keyword-only

# print(*objects, sep=' ', end='\n', file=None, flush=False)
# *objects — positional varargs, остальное keyword-only

# dataclass(*, init=True, repr=True, eq=True, frozen=False, ...)
# Все параметры декоратора — keyword-only

varargs и kwargs

def f(*args, **kwargs):
    # все позиционные → args, все ключевые → kwargs
    pass


def g(a, *args, key, **kwargs):
    # a — позиционный; args собирает остаток позиционных
    # key — keyword-only (после *args автоматически)
    # kwargs — остаток keyword
    pass

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

  • В обычном бизнес-коде злоупотреблять / — читаемость падает; используйте для библиотек и API.
  • Boolean флаги positional — типичный смрад: build(True, False). Делайте keyword-only.
  • Перестановка обычных параметров местами в minor-релизе — breaking; защищайтесь keyword-only.
  • def f(*, x=1) без позиционных перед * — корректно (только keyword), используйте смело.
  • inspect.signature(f).parameters показывает kind: POSITIONAL_ONLY, POSITIONAL_OR_KEYWORD, VAR_POSITIONAL, KEYWORD_ONLY, VAR_KEYWORD.
  • В 3.7 и ниже PEP 570 нет — синтаксис / даст SyntaxError; используйте *args+обёртку.

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

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

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

  • Не знать смысл / и * в сигнатуре.
  • Путать keyword-only с **kwargs.
  • Не объяснять пользу для API-дизайна.

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

  • Может прочитать сложную сигнатуру.
  • Понимает ошибки связывания аргументов.
  • Знает практические причины keyword-only.

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

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

Источники

  • https://docs.python.org/3/library/functions.html

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

Pythonfunctionstyping

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

Python вакансии
  • AI Automation Architect
  • Managing Consultant, Databricks Data Engineering Lead
  • Data Scientist - Mechanicsburg, PA
  • Engineering Manager, Data Foundations
  • Software Developer – Analytics Data Platform (Data Reliability)