Chciałbym napisać funkcję w Pythonie, która przyjmuje segment jako parametr. Idealnie użytkownik będzie w stanie wywołać funkcję w następujący sposób:Jak napisać funkcję, która zajmuje plasterek?
foo(a:b:c)
Niestety, ta składnia nie jest dozwolone przez Python - wykorzystanie a:b:c
jest dozwolone tylko w []
nie ()
.
dlatego widzę trzy możliwości mojej funkcji:
wymagać od użytkownika, aby użyć slice "konstruktor" (gdzie
s_
działa jak the version provided by numpy):foo(slice(a, b, c)) foo(s_[a:b:c])
umieścić logikę moja funkcja w metodzie
__getitem__
:foo[a:b:c]
Porzuć próbuje wziąć kawałek i wziąć start, stop i krok indywidualnie:
foo(a, b, c)
Czy istnieje sposób, aby uzyskać oryginalny składnia do pracy? Jeśli nie, to która z metod składniowych byłaby preferowana? Czy jest jeszcze inna, lepsza opcja?
użyłbym dzięki start, stop, i krok ustawienie domyślne wartości –
W jaki sposób opiera się to głównie na opiniach? To jest całkowicie poprawne pytanie. –
Nie widzę żadnej wady użycia 'foo (a, b, c)' zamiast 'foo (a: b: c)'. – TigerhawkT3