Sobes.tech
Back to questions
Junior — Middle
72

Объясните предназначение операторов * и ** в Python и как их применять в функциях

Companies where asked
Бергман Инфотех

Answer from AI

sobes.tech AI

В Python операторы * и ** используются для распаковки аргументов при вызове функций и для сбора аргументов при их определении.

  1. В определении функции:
  • *args собирает позиционные аргументы в кортеж.
  • **kwargs собирает именованные аргументы в словарь.
def func(*args, **kwargs):
    print('args:', args)
    print('kwargs:', kwargs)

func(1, 2, a=3, b=4)
# args: (1, 2)
# kwargs: {'a': 3, 'b': 4}
  1. При вызове функции:
  • * распаковывает итерируемый объект в позиционные аргументы.
  • ** распаковывает словарь в именованные аргументы.
def greet(name, age):
    print(f'Hello, {name}. You are {age} years old.')

args = ('Alice', 30)
kwargs = {'name': 'Bob', 'age': 25}

greet(*args)       # Hello, Alice. You are 30 years old.
greet(**kwargs)    # Hello, Bob. You are 25 years old.

Таким образом, * и ** обеспечивают гибкость при работе с аргументами функций.