pyswitch.

Um sistema de despachante semelhante a um simples, mas poderoso "para o Python
Baixe Agora

pyswitch. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • MIT/X Consortium Lic...
  • Nome do editor:
  • Michael Kent

pyswitch. Tag


pyswitch. Descrição

Um simples, mas poderosa 'switch'-como despachante sistema para Python pyswitch é um simples mas poderoso 'switch'-como despachante para Python. É inspirado pela declaração switch da linguagem C, mas com maior flexibilidade; valores do caso não estão limitados a inteiros como em C, mas pode ser qualquer utilizável valor com o '==' operador de igualdade, ou qualquer utilizável corda no lado esquerdo do operador 'in', ou qualquer expressão regular. Iterables desses tipos também pode ser usado como caso values.Example: Aqui está um pequeno exemplo de seu uso:. >>> from Mudar pyswitch importação, SwitchError # instanciar um objeto Chave >>> mySwitch = Switch () # Registrar alguns casos e manipuladores caso, utilizando os decoradores handy-dandy # fornecidas pelo objeto interruptor. # manipulador padrão a. Um manipulador padrão é opcional. Se definido, # ele será chamado para todos os valores da chave não manipulados por qualquer outro manipulador #. Se não for definido, um SwitchError será elevado para um valor # interruptor não tratada. # Todos os manipuladores são passados o valor que está sendo ligado, juntamente com qualquer # outros parâmetros posicionais e opcionais dadas ao switch. # Manipuladores pode retornar um valor, que é então retornado pela chamada para o # chave que causou o manipulador a ser chamado. # Naturalmente, os manipuladores podem fazer o que quiser. Neste padrão exemplo de caso #, voltamos uma série de informações interessantes >>> @ mySwitch.default ... def gotDefault (valor, * args, ** kwargs):. ... return "manipulador padrão: eu tenho valor não registrado % r, "\ ... "com os argumentos:% r e kwargs:% r" % \ ... (valor, args, kwargs) # Um valor único caso numérico. O decorador 'caso' é para exata correspondência # para o valor da chave. O valor dado à função caso, chamado # o valor caso, pode ser qualquer tipo utilizável com a '==' operador de igualdade. >>> @ mySwitch.case (0) ... def gotZero (valor, * args, * * kwargs): ... return "gotZero: Eu tenho um% d, com os argumentos:% r e kwargs:% r" % \ ... (valor, args, kwargs) # a gama de valores de caso numéricos. Um iterable de valores pode ser dada # como o valor caso >>> @ mySwitch.case (intervalo (5, 10)) ... def gotFiveThruNine (valor, * args, ** kwargs):. ... return "gotFiveThruNine : Eu tenho um% d, com os argumentos:% r e kwargs:.% r" % \ ... (valor, args, kwargs) # um valor caso corda, para uma correspondência exata >>> @ mySwitch.case (' Guido ') ... def gotGuido (valor, * args, kwargs **): ... return "gotGuido: Eu tenho '% s', com os argumentos:% r e kwargs:% r" % \ ... ( valor, args, kwargs) # Um valor de string para uso com o operador 'in' >>> @ mySwitch.caseIn ( 'lo') ... def gotLo (valor, * args, ** kwargs): .... retornar "gotLo: Eu tenho '% s', com os argumentos:% r e kwargs:% r".% \ ... (valor, args, kwargs) # um jogo padrão de expressão regular em uma corda # Você pode também passar em uma expressão regular pré-compilados. # para caseRegEx, o valor passado para o manipulador caso é realmente # o objeto match resultante do jogo expressão # padrão regular de sucesso. >>> @ mySwitch.caseRegEx (r '\ b ( y \ w *) \ b ') ... def gotPyword (matchObj, * args, ** kwargs): ... return "gotPyword: Eu tenho um matchObject onde o grupo (1) é '% s' ", \ ... "com os argumentos:% r e kwargs:% r" % \ ... (matchObj.group (1), args, kwargs) # e, finalmente, você pode passar um iterable de valores de tipo misto para caso, # caseína, e caseRegEx. Aqui, nós passamos em uma lista de valores heterogêneos # para ser usado para correspondências exatas. >>> @ mySwitch.case () ... def gotStuffInSeq (valor, * args, ** kwargs ): ... return "gotStuffInSeq: Eu tenho% r, com os argumentos:% r e kwargs:% r".% \ ... (valor, args, kwargs) # Agora mostrar o que podemos fazer >>> mySwitch ( 0, testando = False) "gotZero: Eu tenho um 0, com args: () e kwargs: { 'testing': false}" >>> mySwitch (6, bandeira = 'chato') "gotFiveThruNine: Eu tenho um 6 , com os argumentos: () e kwargs: { 'flag': 'chato'} ">>> mySwitch (10, 42) 'manipulador padrão: eu tenho valor não registrado 10, com os argumentos: (42,) e kwargs: {} '>>> mySwitch (' Guido 'BDFL = True) "gotGuido: Eu tenho 'Guido', com os argumentos: () e kwargs: { 'Bdfl': true}" >>> mySwitch (' Alguém viu Guido redor? ') "manipulador padrão: eu tenho valor não registrado 'Alguém viu Guido around', com os argumentos: () e kwargs: {} >>> mySwitch (?"'. Sim, e ele disse "Olá" ', 99, yes = 'não') "gotLo: Eu tenho 'lo', com os argumentos: (99), e kwargs: { 'sim': 'no'}" >>> mySwitch ( 'Pássaro é a palavra Python do dia') "gotPyword: Eu tenho um matchObject onde o grupo (1) é 'Python', com os argumentos: () e kwargs: {} ">>> mySwitch ( 'yo')" gotStuffInSeq: Eu tenho 'yo', com os argumentos: () e kwargs : {}" Requisitos: · Pitão O que há de novo nesta versão: Não é mais necessário chamar o método chave da classe Mudar para despachar um valor, como o método __call__ é agora um sinônimo. Então, em vez disso, você pode usar: · Myswitch = switch () · ... Registre seus casos ... · ReturnValue = myswitch (valor_to_switch_on) · Mas o método de mudança ainda está lá para compatibilidade com a versão anterior.


pyswitch. Software Relacionado