Shull
@Shull
хочу быть хорошим IT-шником

*args в Python — нужны ли звёздочки?

Согласно синтаксису *args, нужно 2 звёздочки: наверху (при создании функции) и внизу (при её запуске). Но есть проблема!

Обе звездочки на месте - всё норм.
def example(*args):
	for i in args:
		print(i);
example(*[1,55,73]);


Сверху нет звездочки - ошибка, TypeError: example() takes 1 positional argument but 3 were given
def example(args):
	for i in args:
		print(i);
example(*[1,55,73]);


Снизу нет звёздочки - принимает массив, как единый объект, без разбивки.
def example(*args):
	for i in args:
		print(i);
example([1,55,73]);


Вообще нету звёздочек - всё норм.
def example(args):
	for i in args:
		print(i);
example([1,55,73]);


В чём дело? Может, звёздочки вообще не нужны?

Код тут.
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ответы на вопрос 4
@anerev
Что вообще за бред? Ну вы же где-то прочитали про "звёздочки" разве там всего остального не было написано? В последнем случае вы передаёте один объект, список, *args нужно для передачи нескольких аргументов. Звёздочку при вызове функции писать не надо. Вот как *args применяют:
def example(*args):
  for i in args:
    for t in i:
      print(t) 

example([1,55,73], [2,95,93]);
Ответ написан
по-моему тут более чем доступно про это написано
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Ответ написан
Комментировать
shpaker
@shpaker
Вольный хлебопашец
Вы просто не умеете их готовить. Рабочие варианты:
def example(*args):
...  for i in args:
...    print(i)
...example(1, 55, 73)

def example(args):
...  for i in args:
...    print(i)
...example([1, 55, 73])

def example(*args):
...  for i in args:
...    print(i)
...example(*[1, 55, 73])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы