withref.

usa a instrução com simplificar deserredas complexas - um pouco como em Pascal ou Javascript
Baixe Agora

withref. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Other/Proprietary Li...
  • Preço:
  • FREE
  • Nome do editor:
  • Jonathan Eunice
  • Site do editor:
  • http://bitbucket.org/jeunice/

withref. Tag


withref. Descrição

O withref é um módulo Python que faz com que o Python seja com declaração capaz de simplificar as desreferências complexas. Isto é o que inicialmente, pensei ingênuo que a declaração era, semelhante ao com a declaração de Pascal meio lembrado. O uso típico de Python é uma proteção mais complexa sobre os pontos de entrada e saída para usar um objeto. Veja e. este artigo de effbot. Mas Withref torna isso mais simples "apenas me dar o objeto dereferenciado, por favor" use o caso de trabalho também. Usage de adef Import Ref do EasyDict Import EasyDict usado apenas para fins de demonstração. Maneira conveniente de # Faça entradas de dict acessíveis como propriedades deferenciáveis. a = easydict ({'b': {'c': {'c1': 1}, 'D': 44.1}}) com Ref (ABC) como C: C.C1 = 99 Imprimir um A_IDeal = EasyDict ({ 'B': {'c': {'c1': 99}, 'D': 44.1}}) Assert A == A_IDeal funciona com referências de estilo de matriz também, claro :: com ref (a ) como cc: c = 99 afirmam A == A_IDeal, mas cuidado super-dereferencing! Enquanto isso funciona corretamente :: com Ref (ABCC1) como C1: Imprimir C1 Assert C1 == 99This não :: com Ref (ABCC1) como C1: C1 = 12345 Assert C1 == 12345 Assert ABCC1 == 99 # Com Pascal Heartunlike pesado, a Ref não é embutida na linguagem apropriada. E ao contrário do Perl, o Python é menos ansioso para fornecer lvalues para cada menção de uma variável ou valor. Como resultado, `` `Ref`` pode fornecer o valor * do` do `` C1` C1`, mas não o 'lvalue * lvalue *. Como `` `` `ref`` Remove n- 1 camadas da estrutura anexada para valores, mas apenas N-2 para atribuição. Ainda, em estruturas complexas de várias camadas, esta pode ser uma boa simplificação :: com ref (app.config.server.wsgi) como WSGI: Wsgi.logger = some_logger wsgi.debug_level = 4 wsgi.port = 8080 sem dúvida beats :: app.config.server.wsgi.logger = some_logger app.config.server.wsgi.debug_level = 4 app.config.server.wsgi.port = 8080for simplicidade e clareza.Eu vejo um monte de código de configuração que constantemente repete o mesmo longo Derederências multi-nível. Esse estilo é repetitivo (anti-seco) e tende a blocos de código alinhados à esquerda, os quais impedem a compreensão do programa. Usando a instrução com a instrução é uma maneira interessante de simplificar e, ao mesmo tempo, adicione uma pequena estrutura visual extra. E enquanto a atribuição ("produção de lvalue") nem sempre é possível, ainda há alguns truques interessantes possíveis com a simples produção de valor: com Ref ("Esta é uma string" ) como T: Imprimir Talountativewhile Yadda.yadda.yadda Referenciamento é muito comum, pode-se alsouse uma atribuição de variável mais proximidade :: WSGI = app.config.server.wsgi WSGI .logger = ste_logger wsgi.debug_level = 4 wsgi.port = 8080 Isso não tem a estrutura mais recuada da abordagem withref, mas ainda é muito preferível ao que você costuma encontrar no campo.see Alsothhe Withhaacks Module, que inclui muitos outros hacks divertidos (lambdas multi-line, novas estruturas de loop, etc.) - mas também requer o módulo Byteplay que ativamente introspecção e mungas python bytecode ("perigo, vai robinson! Perigo!"), e não foi atualizado para trabalhar além do Python 2.6 Extensionas futuras .Possíveis "withhacks" mostra, usando intros Peça Poderíamos determinar o lvalue do objeto de chamada mesmo no caso de borda, onde é um nó de folha de sua estrutura anexa. Isso não exigiria nenhuma alteração de Bytecode, e deve ser compatível com versões modernas de Python (por exemplo, 2.7.x e 3.x). Se aquele truque pode ser feito simplesmente, portátil, rocha-sólido de forma confiável e de forma transparente para satisfazer aqueles que CÓDIGO Os módulos que tendem a precisar desse tipo de simplificação de desarreferenciamento - ou seja Os módulos complexos geralmente usados em configurações de produção, no qual são compreensivelmente detestam para introduzir quaisquer fontes possíveis de erro ou qualquer impedância de desempenho - essa é a chave open question.Installation Pip Install withref para usar o código de teste e demonstração, também :: Pip Install EasyDict (você pode precisar prefixar estes com "sudo" para autorizar a instalação.) Homepage do produto


withref. Software Relacionado

xworkflows.

Uma biblioteca implementando fluxos de trabalho (ou máquinas de estado) para projetos de Python ...

80

Download