все Python 3Функциипонятие
*args
параметры
Принимает произвольное число позиционных аргументов как кортеж.
Синтаксис
def f(*args): ...
Внутри функции args — именно кортеж, а не список, поэтому менять его на месте нельзя. Любой параметр, объявленный после *args, становится keyword-only: передать его позиционно уже не выйдет, только по имени. Звёздочка в вызове f(*seq) делает обратное — распаковывает последовательность в отдельные аргументы.
Примеры
def my_sum(*args):
return sum(args)
print(my_sum(1, 2, 3)) # → 6
print(my_sum(10, 20, 30, 40)) # → 100
def show(*args):
for a in args:
print(a)
show('a', 'b', 'c') # → a / b / c
def first_last(*args):
return args[0], args[-1]
print(first_last(1,2,3,4)) # → (1, 4)
def concat(*args, sep=' '):
return sep.join(str(a) for a in args)
print(concat('x','y','z')) # → x y z
nums = [4, 5, 6]
print(my_sum(*nums)) # → 15 (распаковка)
def mixed(a, b, *args):
return a, b, args
print(mixed(1,2,3,4)) # → (1, 2, (3, 4))
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности