pysenwitch

Een eenvoudig maar krachtig 'switch'-achtig dispatcher-systeem voor Python
Download nu

pysenwitch Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • MIT/X Consortium Lic...
  • Naam uitgever:
  • Michael Kent

pysenwitch Tags


pysenwitch Beschrijving

Een eenvoudige maar krachtige 'switch'-achtige dispatcher voor Python pyswitch is een eenvoudige maar krachtige 'switch'-achtige dispatcher voor Python. Het is geïnspireerd op de taal C switch statement, maar met meer flexibiliteit; Bij waarden zijn niet beperkt tot gehele getallen zoals in C, maar kan elke waarde worden gebruikt met het '==' gelijkheid operator of tekenreeks bruikbaar op de linkerkant van de operator 'in', of een reguliere expressie. Hier is een klein voorbeeld van het gebruik ervan:: Iterables van deze typen kunnen ook worden gebruikt als case values.Example zijn. >>> van pyswitch import Switch, SwitchError # instantiëren een Switch object >>> mySwitch = Switch () # Registreren sommige gevallen en casemanagers, met de handige-dandy # decorateurs door de switch object. # A standaardhandler. Een default handler is optioneel. Indien gedefinieerd, # zal worden opgeroepen voor switch waarden niet uit andere # handler behandeld. Indien niet gedefinieerd, wordt een SwitchError worden opgewekt om een onverwerkte # schakelwaarde. # Alle handlers worden doorgegeven waarde wordt ingeschakeld, samen met eventuele # andere optioneel positionele en keyword parameters aan de schakelaar. # Handlers kan een waarde terug die vervolgens wordt geretourneerd door de oproep tot # schakelaar die de handler genoemd te worden veroorzaakt. # Natuurlijk kunt handlers alles wat je wilt doen. In deze standaard-case # Zo keren we een reeks van interessante info >>> @ mySwitch.default ... def gotDefault (waarde, * args, ** kwargs):. ... return "Default handler: Ik heb niet-geregistreerde waarde % r "\ ... "met argumenten:% r en kwargs:% r" % \ ... (waarde args, kwargs) # Een enkele numerieke waarde case. De 'case' decorateur is voor de exacte matching # om de switch waarde. De waarde die de zaak functie, genaamd # Bij waarde kan elk type bruikbaar bij het '==' gelijkheid operator. >>> @ mySwitch.case (0) ... def gotZero (waarde, * args, * * kwargs): ... return "gotZero: ik heb een% d, met argumenten:% r en kwargs:% r" % \ ... (waarde args, kwargs) # een reeks numerieke waarden case. Een iterable waarden worden gegeven # voorkomend geval waarde >>> @ mySwitch.case (bereik (5, 10)) ... def gotFiveThruNine (waarde, * args, ** kwargs). ... return "gotFiveThruNine : ik heb een% d, met argumenten:% r en kwargs:.% r" % \ ... (waarde, args, kwargs) # een string case-waarde, voor een exacte match >>> @ mySwitch.case (' Guido ') ... def gotGuido (waarde, * args, ** kwargs): ... return "gotGuido: ik heb '% s', met argumenten:% r en kwargs:% r" % \ ... ( value, args, kwargs) # Een tekenreekswaarde voor gebruik met de operator 'in' >>> @ mySwitch.caseIn ( 'lo') ... def gotLo (waarde, * args, ** kwargs):. ... return "gotLo: ik heb '% s', met argumenten:% r en kwargs:% r".% \ ... (waarde, args, kwargs) # een reguliere expressie patroon match in een string # U kunt ook doorgeven in een pre-gecompileerde reguliere expressie. # voor caseRegEx, de waarde die aan de zaak handler is eigenlijk # the match Object door succesvolle expressie # reguliere patroon spel. >>> @ mySwitch.caseRegEx (r '\ b ( y \ w *) \ b ') ... def gotPyword (matchObj, * args, ** kwargs): ... return "gotPyword: Ik kreeg een matchObject waar de groep (1) is '% s', "\ ... "met argumenten:% r en kwargs:% r" % \ ... (matchObj.group (1), args, kwargs) # en tot slot, kunt u langs een iterable van mixed-type waarden tot geval, # caseïne en caseRegEx. Hier komen we in een lijst van heterogene # waarden te gebruiken voor exacte overeenkomsten zijn. >>> @ mySwitch.case () ... def gotStuffInSeq (waarde, * args, ** kwargs ): ... return "gotStuffInSeq: ik heb% r, met argumenten:% r en kwargs:% r".% \ ... (waarde, args, kwargs) # Nu laten zien wat we kunnen doen >>> mySwitch ( 0, het testen = false) "gotZero: ik heb een 0, met args: () en kwargs: { 'testen': False}" >>> mySwitch (6, vlag = 'saai') "gotFiveThruNine: ik heb een 6 met args: () en kwargs: { 'flag': 'boring'} ">>> mySwitch (10, 42) standaardhandler: ik heb geregistreerde waarde 10, met argumenten: (42) en kwargs: {} '>>> mySwitch (' Guido 'BDFL = True) "gotGuido: ik heb 'Guido', met args: () en kwargs: { 'BDFL': True}" >>> mySwitch (' Iedereen gezien Guido rond? ') "Default handler: ik heb niet-geregistreerde waarde 'Iedereen gezien Guido around', met args: () en kwargs: {} >>> mySwitch (?".' Yep, en hij zei: "hello" ', 99, ja = 'nee') "gotLo: ik heb 'lo', met argumenten: (99) en kwargs: { 'ja': 'nee'}" >>> mySwitch ( 'Bird is de Python woord van de dag') "gotPyword: Ik kreeg een matchObject waar de groep (1) is 'Python', met args: () en kwargs: {} ">>> mySwitch ( 'yo')" gotStuffInSeq: Ik heb 'yo', met args: () en kwargs : {}" Vereisten: · Python Wat is er nieuw in deze release: Het is niet langer nodig om de schakelaar methode van de Switch klasse bellen om een waarde te verzenden, aangezien de __call__ methode is nu een synoniem. Dus in plaats daarvan kun je gebruik maken van: · MySwitch = Switch () · ... Uw koffers registreren ... · ReturnValue = myswitch (waarde_to_switch_on) · Maar de schakelmethode is er nog steeds voor achterwaartse compatibiliteit.


pysenwitch Gerelateerde software