Я хотел бы написать функцию в Python, которая принимает срез в качестве параметра. В идеале пользователь будет иметь возможность вызвать функцию следующим образом:Как написать функцию, которая берет срез?
foo(a:b:c)
К сожалению, этот синтаксис не допускается Python - использование a:b:c
допускается только в пределах []
, не ()
.
поэтому я вижу три возможности для моей функции:
Требовать пользователю использовать срез "конструктор" (где
s_
действует как the version provided by numpy):foo(slice(a, b, c)) foo(s_[a:b:c])
Put логику моя функция в
__getitem__
:foo[a:b:c]
Откажитесь пытается взять кусочек и взять старт, стоп и шаг по отдельности:
foo(a, b, c)
Есть ли способ, чтобы получить оригинальный синтаксис для работы? Если нет, какой из синтаксисов обходных путей будет предпочтительнее? Или есть другой, лучший вариант?
Я хотел бы использовать начало использования, остановки и шаг настройки по умолчанию значения –
Как это основано прежде всего на мнении? Это вполне правильный вопрос. –
Я вообще не вижу недостатков в использовании 'foo (a, b, c)', а не 'foo (a: b: c)'. – TigerhawkT3