jestem próby zapisu wyjątku podnoszenie bloków kodu do mojego kodu Pythona w celu zapewnienia, że parametry przekazywane do funkcji spełniać odpowiednie warunki (tj dokonywania parametry obowiązkowy parametrów typu sprawdzania, ustanawiając granicę wartości parametrów, itp.). Rozumiem w sposób zadowalający, jak manually raise exceptions, a także handling them.Python - parametr kontroli z Exception Podnoszenie
from numbers import Number
def foo(self, param1 = None, param2 = 0.0, param3 = 1.0):
if (param1 == None):
raise ValueError('This parameter is mandatory')
elif (not isinstance(param2, Number)):
raise ValueError('This parameter must be a valid Numerical value')
elif (param3 <= 0.0):
raise ValueError('This parameter must be a Positive Number')
...
To było dopuszczalne (wypróbowane i prawdziwe) sposób parametr kontroli w Pythonie, ale muszę się zastanawiać: Ponieważ Python nie mają sposób pisać rozdzielnie przypadków oprócz if-then-else, jest istnieje bardziej wydajny lub właściwy sposób wykonania tego zadania? Lub może wdrażać długie wyciągi instrukcji if-then-else jako jedyną opcję?
Można by stworzyć dekorator funkcji, coś takiego '@check (typ = [None, None, pływak, float] waha = [None, None (0.0,10.0), None])' (tutaj , 'Brak' oznaczający" bez ograniczeń ") –
Może to ci pomoże: http://stackoverflow.com/questions/15299878/how-to-use-python-decorators-to-check-function-arguments –
Wierz lub nie, myślę, że używanie instrukcji assert może być dla mnie bardziej korzystne niż użycie instrukcji if-elif. Wpadłem na pomysł, zarówno po sprawdzeniu linku zamieszczonego w komentarzach, jak i kodzie użytym do dekoratora. Dzięki, chłopaki! –