Załóżmy, że mam funkcję o nazwie generator
, która zwraca 4-tkę z losowo wybranymi wartościami w określonych wstępnie określonych zakresach. Powiedzmy, że krotka jest postaci (age, sex, location, marital_status)
:Dopasowywanie wzorców dla parametrów funkcji w języku Python
age is in range(5, 85)
sex is a member of the set {"m", "f"}
location is a member of the set of all the cities in California
marital_status is a member of {"married", "single", "separated"}
Z drugiej strony, powiedzmy, że zdefiniowano 20 różnych funkcji, z definicji tak:
def p1 (age, sex, location, marital_status)
def p2 (age, sex, location, marital_status)
.
.
gdzie p1
ma otrzymać parametry z wartości następującej postaci:
`age` must be in the range 20 to 45
`sex` must be male
`location` could be any city in Southern California
`marital_status` could be either single or married
i wyobrazić sobie inny zestaw wartości dla p2
aż do p20
.
Jaki jest pragmatyczny sposób określania, który zestaw wygenerowanych wartości jest zgodny z daną funkcją?
W tym przypadku wszystkie definicje gdzie dokładnie taka sama, ale mogę sobie wyobrazić przypadki, gdzie mogą znajdować się niewielkie różnice w definicjach, na przykład p18
mogłyby być def p1 (age, location)
ze szczególnych ograniczeń w zakresie możliwości age
i location
.
P.S. Wzorce nie muszą się wykluczać, co oznacza, że zestaw wygenerowanych wartości może równie dobrze pasować do więcej niż jednej funkcji.
Ponieważ jesteś na Pythonie 3, * Adnotacje funkcji * mogą być najlepszym sposobem: https://www.python.org/dev/peps/pep-3107/. – cdarke
Czy wzorce wzajemnie się wykluczają, czy też możliwe jest, że więcej wzorów pasuje? – dlask
@dlask: Dobra uwaga. Istnieje niewielkie prawdopodobieństwo, że wzór pasuje do więcej niż jednej funkcji. –