Pyswitch.

Un sistema di dispatcher semplice e semplice ma potente per Python
Scarica ora

Pyswitch. Classifica e riepilogo

Annuncio pubblicitario

  • Rating:
  • Licenza:
  • MIT/X Consortium Lic...
  • Nome editore:
  • Michael Kent

Pyswitch. Tag


Pyswitch. Descrizione

Un sistema di dispatcher semplice ma potente per Python Pyswitch è un dispatcher 'switch' semplice ma potente per Python. È ispirato dalla dichiarazione di switch di lingua C, ma con maggiore flessibilità; I valori del caso non sono limitati a numeri interi come in C, ma può essere qualsiasi valore utilizzabile con l'operatore di uguaglianza '==' o qualsiasi stringa utilizzabile sul lato sinistro dell'operatore "in" o qualsiasi espressione regolare. Iterabili di questi tipi possono anche essere utilizzati come valori del caso. Esempio: ecco un piccolo esempio del suo utilizzo: >>> da Pyswitch Import Switch, SwitcherRor # istanziare un oggetto interruttore. >>> MySwitch = Switch () # Registra alcuni casi e Ganalatori del caso, utilizzando i decoratori a mano-dandy # forniti dall'oggetto dell'interruttore. # Un gestore predefinito. Un gestore predefinito è facoltativo. Se definito, # verrà chiamato per tutti i valori dell'interruttore non gestiti da nessun altro gestore. Se non definito, un switcherror verrà sollevato per un valore dell'interruttore # non medico. # Tutti i gestori vengono superati il valore che viene acceso, insieme a qualsiasi # altri parametri posizionali e parole chiave opzionali forniti all'interruttore. # I gestori possono restituire un valore, che viene quindi restituito dall'interruttore di chiamata a # che ha causato il convocato del gestore. # Naturalmente, i gestori possono fare tutto ciò che vuoi. In questo caso # Esempio di custodia predefinito, restituiamo una stringa di informazioni interessanti. >>> @ myswitch.default ... def Gotdefault (valore, * args, ** kwargs): ... ritorno "Gestore predefinito: ho ottenuto un valore non registrato % r, "\ ..." con args:% r e kwargs:% r "% \ ... (valore, args, kwargs) # un singolo valore custodia numerico. Il decoratore 'Case' è per il numero corrispondente esatto al valore dell'interruttore. Il valore fornito alla funzione Case, chiamato # il valore del caso, può essere qualsiasi tipo utilizzabile con l'operatore di uguaglianza '=='. >>> @ myswitch.case (0) ... def Gotzero (valore, * args, * * Kwargs): ... ritorno "GOTZERO: Ho ottenuto un% D, con ARGS:% R e Kwargs:% r"% \ ... (valore, args, kwargs) # una gamma di valori custodia numerici. Un valore Iterable of Valerali può essere dato come il valore del caso. >>> @ myswitch.case (intervallo (5, 10)) ... def Gotfivethrunine (valore, * args, ** kwargs): ... ritorno "Gotfivethrunine : Ho ottenuto un% d, con args:% r e kwargs:% r "% \ ... (valore, args, kwargs) # Un valore della custodia di stringhe, per una corrispondenza esatta. >>> @ myswitch.case (' Guido ') ... def Gotguido (valore, * args, ** kwargs): ... ritorno "Gotguido: Ho ottenuto'% s ', con args:% r e kwargs:% r"% \ ... ( Valore, args, kwargs) # Un valore di stringa per l'uso con l'operatore 'in'. >>> @ myswitch.casein ('lo') ... def gotlo (valore, * args, ** kwargs): ... Ritorna "Gotlo: Ho ottenuto '% s', con args:% r e kwargs:% r"% \ ... (valore, args, kwargs) # un normale modello di espressione corrispondente in una stringa. # Puoi anche passare un'espressione regolare pre-compilata. # Per CasereGex, il valore passato al gestore del caso è in realtà # L'oggetto della partita risultante dalla corretta corrispondenza del modello di espressione regolare #. >>> @ myswitch.caseregex (R '\ B ( y \ w *) \ b ') ... def gotpyword (matchobj, * args, ** kwargs): ... return "gotpyword: Ho ricevuto un matchobject dove il gruppo (1) è '% s', "\ ..." con args:% r e kwargs:% r "% \ ... (matchobj.group (1), args, kwargs) # E infine, puoi passare un Iterable di valori di tipo misto alla cassa, # casein e CasereGex. Qui, passiamo in un elenco di valori eterogenetici da utilizzare per le corrispondenze esatte. >>> @ myswitch.case () ... def Gotstuffinseq (valore, * args, ** kwargs ): ... ritorno "gotstuffinseq: ho ottenuto% r, con args:% r e kwargs:% r"% \ ... (valore, args, kwargs) # ora mostra ciò che possiamo fare. >>> Myswitch ( 0, Test = Falso) "Gotzero: Ho ottenuto un 0, con ARGS: () e Kwargs: {" Test ": false}" >>> myswitch (6, flag = 'noioso') "Gotfivethrunine: ho un 6 , con args: () e kwargs: {'flag': 'noioso'} ">>> Myswitch (10, 42) 'Gestore predefinito: ho ottenuto valore non registrato 10, con args: (42,) e kwargs: {} '>>> myswitch (' GUIDO ', BDFL = TRUE) "GOTGUIDO: Ho ottenuto' GUIDO ', CON ARGS: () E KWARGS: {' BDFL ': TRUE}" >>> MySwitch (' chiunque abbia visto Guido in giro? ') "Gestore predefinito: ho ottenuto un valore non registrato' chiunque abbia visto Guido intorno?", Con ARGS: () e Kwargs: {} ">>> myswitch ('sì, e ha detto" ciao ".", 99, sì = "No") "Gotlo: Ho ottenuto" Lo ", con ARGS: (99,) e Kwargs: {'Sì': 'No'}" >>> MySwitch ('Bird è la Python Word of the Day ") "Guntpyword: Ho ricevuto un matchobject dove gruppo (1) è 'Python', con args: () e kwargs: {} ">>> myswitch ('yo')" Gotstuffinseq: Ho ottenuto "yo ', con ARGS: () e Kwargs : {}" Requisiti: · Python. Cosa c'è di nuovo in questa versione: Non è più necessario chiamare il metodo dell'interruttore della classe Switch per inviare un valore, poiché il metodo __Call__ è ora sinonimo. Quindi, invece, puoi usare: · MySwitch = Switch () · ... Registra i tuoi casi ... · RitornoValue = myswitch (valore_to_switch_on) · Ma il metodo dell'interruttore è ancora lì per la compatibilità all'indietro.


Pyswitch. Software correlato