Переменное количество аргументов для одной функции

#python #python-3.x

#python #python-3.x

Вопрос:

Я попробовал некоторый код, но не получил удовлетворительного ответа. Вывод кода должен содержать точное количество аргументов с сайта вызова:

 >>> def  Hello(PitU,*V):
    print("you passed" , PitU,"Arguments")
    for Pit in V:
        print(Pit)

#case1      
>>> Hello(3,"one","two","three")
you passed 3 Arguments
one
two
three

#case2
>>> Hello(3,"one","two")
you passed 3 Arguments
one
two

#case3
>>> Hello(3,"one","two","three","four")
you passed 3 Arguments
one
two
three
four
>>> 
  

Я ожидаю, что результат будет:

 A. case-1
you passed 3 Arguments
one
two
three

B. case-2
error

C. case-3
error

instead of 

Case1
you passed 3 Arguments
one
two
three

case2
you passed 3 Arguments
one
two

case3
you passed 3 Arguments
one
two
three
four
  

Комментарии:

1. Для дальнейшего использования, после вставки кода в вопрос (или ответ), выберите код и либо введите Ctrl K, либо нажмите {} кнопку в интерфейсе редактора, чтобы правильно отформатировать код. Я исправил основной блок для вас здесь.

2. Как вы думаете, почему значение первого аргумента в любом случае связано с * параметром?

3. Если вам не нужно указывать, сколько аргументов должно следовать, вы можете опустить параметр. Затем, если вы хотите напечатать, сколько их было, просто измените свой код на print("you passed" , len(V),"Arguments")

Ответ №1:

Для этого вам нужно поставить галочку самостоятельно, python не сделает этого за вас.

 def Hello(PitU, *V): 
    if len(V) != PitU:
        print("error")
        return
    print("you passed", PitU, "Arguments") 
    for Pit in V: 
        print(Pit)
  

Ответ №2:

Поскольку PITu — это не количество аргументов, которые вы должны передать, это просто еще один аргумент, который вы туда вводите. в технике python нет ничего плохого, вы просто неправильно поняли ее концепцию.