Załóżmy Chciałem napisać funkcję podobną do rangeDefinicja funkcji jak zakresie
Przypomnijmy, że zakres ten formularz jeden argument i 2/3 argument:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
Gdybym chciał metodę lub funkcję mają ten sam interfejs, czy istnieje bardziej elegancki sposób niż to:
def range_like(*args):
start,stop,step=[None]*3
if len(args)==1:
stop=args[0]
elif len(args)==2:
start,stop=args
elif len(args)==3:
start,stop,step=args
else:
raise ValueError
print(start,stop,step)
Nie oddałem głosu, ale obie twoje odpowiedzi mają problem, jeśli "Brak" jest poprawnym argumentem. Rozważmy 'slice()', który przyjmuje podobne argumenty, 'slice (1)' musi być równoważne 'slice (None, 1, None)', ale 'slice (1, None)' musi odpowiadać 'slice (1 , Brak, Brak) '. –
w takim przypadku możesz użyć obiektów wartownika. ale używanie Brak jako brakującego znacznika argumentu jest standardową praktyką Pythona. –