Обработка аргументов

#python #python-3.x

#python #python-3.x

Вопрос:

Я пишу простую функцию «arr (n)», которая возвращает список чисел до n:

 def arr(n):
    return [r for r in range(n)]
  

Однако мне дан случай, когда никакие аргументы не передаются в функцию arr (n), поэтому просто arr() . Что приводит к этой ошибке:

 TypeError: arr() missing 1 required positional argument: 'n'
  

Я не смог найти или придумать решение, чтобы обойти эту проблему. Не могли бы вы мне помочь?

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

1. что будет range использовать функция, если задано no n ?

Ответ №1:

Ваша сигнатура функции def arr(n) сообщает Python, что при вызове этой функции она должна получать один позиционный аргумент.

Если вы ожидаете, что не получите никаких аргументов, тогда было бы предложено создать аргумент по умолчанию.

 def arr(n=0):
    return [r for r in range(n)]
  

В случае arr() вы получите пустой список ( [] ). В противном случае для некоторого целого i числа вы получите [0, 1, ..., i] .

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

1. О! Сработало как шарм! Я никогда раньше не видел эту технику, спасибо!

Ответ №2:

это потому, что вы определили функцию, которой требуется значение n

когда вы запускаете arr() , он не знает, что такое n

вы должны поместить что-то в скобки ()

если вы хотите, чтобы программа не прерывалась при ее вызове, не добавляя в нее ничего, вы можете использовать try и except

 try:
    arr()
except:
    print("error!")
  

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

1. Конечно, но я делаю это на веб-сайте, и он вызывает arr() , мне не разрешено его трогать. Я пишу только функцию arr (n) .

2. @winston Что вы хотите, чтобы оно возвращало при вызове arr() ?