Py-pattern-matching

Data-structuur patroon matching en uitpakken voor Python
Download nu

Py-pattern-matching Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • MIT/X Consortium Lic...
  • Prijs:
  • FREE
  • Naam uitgever:
  • Erik Allik
  • Uitgever website:
  • https://github.com/eallik/

Py-pattern-matching Tags


Py-pattern-matching Beschrijving

Py-Pattern-matching is een data-structuurpatroon matching en uitpakken voor Python.usageCall de PatternMatching.Match () Functie met twee argumenten: - Argument 1: het patroon om te matchen tegen - argument 2: de gegevensstructuur om te matchen - optioneel argument Flatten: True Om de gematchte waarden afgevlakt te hebben, is dat wil zeggen teruggekeerd als een platte tuple, ongeacht hun positie in de structuur van de overeenkomende gegevens. Return-waarde: als Flatten waar is: Match_OK, Flatten is niet waar: Match_OK, Matched_Data_StructureCAVEAT: Als alle overeenkomende waarden in het patroon worden genegeerd, komt overeen () geen tuple terug, maar een boolean.yes: match_ok = match (patroon, gegevens) nee: match_ok, = match (patroon, Gegevens) Ingebouwde wedstrijdobjecten - elk- is_instanceany match-object kan worden ingepakt met negeer () om de waarde te negeren die overeenkomt met het wedstrijdobject in de geretourneerde waarden. Naar kunnen zelf worden gebruikt als een snelkoppeling voor negeer (elk) .Artert waar == Match (negeer, 123) Gebruik in (eenheid) tests (maar ook Overal anders) Het vergelijken van de retourwaarden van functies is vervelend als u de ==-operator niet eenvoudig kunt gebruiken. Bijvoorbeeld wanneer een functie een tuple retourneert en u geeft alleen om sommige delen van de tuple en niet de hele tuple: retval = some_function_under_test () Aansert Retval en Isinstance (Retval, Tuple) \ en Len (RETWAL) == 3 en Retval == 'foo' \ and Isinstance (Retval , Tuple) en Len (Retval ) == 2 \ en Isinstance (Retval , Someexception) met Pattern Matching: Retval = Sommige_function_under_test () ASSERT RETWAL == ('FOO', (ELKE, IS_INSTANTIE (SOMEEXCESSIECCESSIECCESSIECCESPLETING OKMATCH_OK, VALUE = MATCH (ELKE 'FOBAR') ASSERT MATCH_OK EN VALUE == 'FOBOBAR'MATCH_OK = MATCH (NEGORE ( Elk), 'Foobar') Assert Match_okmatch_OK, Value1, Value2 Match ((Any, any), ('foo', 'bar')) Assert Match_OK en Value1 == 'Foo' en Value2 == 'Bar'Match_OK, ( VALUE1, VALUE2) = Match ((elk), ('foo', 'bar'), platte = false) Assert Match_OK en Value1 == 'Foo' en Value2 == 'Bar'Match_OK, (waarde1,) = Match ((elke, negeer (willekeurige)), ('foo', 'whatev')) Assert Match_OK en Value1 == 'Foo'Match_OK, Value1, Value2 = Match ((' Foo ', ELKE), ('FOO', 1, 2)) ASSERT MATCH_OK EN VALUE1 == 1 EN VALUE2 == 2MATCH_OK, VALUE1, VALUE2, VALUE3 = MATCH (('FOO', IEDEREEN), ('FOO', 1, (2, 3))) Assert Match_OK en VALUE1 == 1 en VALUE2 == 2 en VALUE3 = 3Match_OK, (VALUE1, (VALUE2, VALUE3)) = Match (('foo', elk, (Any, elke)), ('FOO', 1, (2, 3)), platten = false) Assert Match_OK en VALUE1 == 1 en VALUE2 == 2 en VALUE3 = 3GO MATCHMATCH_OK = MATCH (3, 4) ASSERT Niet match_ok # Merk op hoe u nog steeds met succes afpakken van retourwaarden en gewoon `waarde negeert als de match faildemate_ok, waarde = match (IS_INSTANCE (Unicode), '123132') ASSERT NOT MATCH_OK # Merk op hoe u zich nog steeds succesvol kunt uitpakken van retourwaarden en negeer de waarde "als de match faildematch_ok, (waarde1, (waarde2, waarde3)) = match (('foo', (elk))), ('not-foo', ( 1, (2, 3)))) Assert niet match_ok # ... zelfs wanneer de structuur van de gegevens volledig mismatchesMatch_ok, (waarde1, (waarde2, waarde3)) = match (('foo', (elk, Elk))), ('FOO', 'BLA BLA ')) ASSERT NIET MATCH_OK # ... vertrouw niet op `Value1`,` Value2` en `Value3` is' niemand 'hoewel - de matcher kan nog steeds terugkeren wat het daar is; Je moet 'Match_ok' zelf controleren.Product's startpagina


Py-pattern-matching Gerelateerde software

Impas

Generieke Python-bibliotheek voor 0D, 1D- en 2D-patroon-distributies ...

75

Downloaden