mitref

verwendet die mit Anweisung, um komplexe Derenferenzen zu vereinfachen - etwas wie in Pascal oder Javascript
Jetzt downloaden

mitref Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Other/Proprietary Li...
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Jonathan Eunice
  • Website des Verlags:
  • http://bitbucket.org/jeunice/

mitref Stichworte


mitref Beschreibung

Witref ist ein Python-Modul, das Pythons mit der Erklärung leistet, die komplexe Derenferenzen vereinfachen kann. Dies ist, was ich anfangs naiv dachte, dass die Aussage dachte, dass die Aussage mit halb erinnertem Pascal ähnelte. Der typische Python-Gebrauch ist ein komplexerer Guard über den Einstiegs- und Ausgangspunkten für die Verwendung eines Objekts. Siehe z. Dieser EFFBOT-Artikel. Mitref macht dieses einfacher jedoch "Gib mir einfach das dargestellte Objekt", bitte "Case-Arbeit als gut verwenden Bequeme Möglichkeit, Dict-Einträge als dot-verschiebbare Eigenschaften zugänglich zu machen. A = EasyDict ({'B': {'c': {'c1': 1}, 'd': 44.1}}) mit REF (ABC) als C: C.C1 = 99 Drucken A A_IDEAL = EasyDict ({{ 'b': {'c': {'c1': 99}, 'd': 44.1}}) Assert a == A_IDEAL Es funktioniert auch mit Array-Stil-Referenzen, natürlich: mit ref (a ) als CC: C = 99 Assert a == A_IDEAL AGREAD ABERAY ABERY ABERAYENCINGING! Während dies ordnungsgemäß funktioniert :: Mit REF (ABC1) als C1: drucken C1 Assert C1 == 99Das nicht: mit REF (ABC1) als C1: C1 = 12345 Assert C1 == 12345 ABCC1 == 99 # Mit schwerem Herzensmusik-Pascal wird Ref nicht in die richtige Sprache eingebaut. Im Gegensatz zu Perl ist Python weniger eifrig, Lvalues für jede Erwähnung einer Variablen oder einem Wert bereitzustellen. Als Ergebnis kann `` ref``` den * Wert * des vollen agierenden `` c1``, aber nicht den zuweisbaren * lvalue *. Wie Pascal's `` mit` 1 Schichten der umschließenden Struktur für Werte, jedoch nur N-2 zur Zuordnung. Immer noch in komplexen mehrschichtigen Strukturen kann dies eine schöne Vereinfachung sein: mit ref (app.config.server.wsgi) als wsgi: wsgi.logger = etwas_logger wsgi.debug_level = 4 wsgi.port = 8080 Argutably Beats :: app.config.server.wsgi.logger = by_logger app.config.server.wsgi.debug_level = 4 app.config.Server.wsgi.port = 8080Für Einfachheit und Klarheit. Ich siehe viel Konfigurationscode, der ständig dieselbe lange wiederholt Multi-Level-Derenelemente. Dieser Stil ist wiederholt (trocken) und neigt von links ausgerichteten Codeblöcken, beide behindern das Programmverständnis. Die Verwendung der mit der Erklärung ist ein ordentlicher Weg, um zu vereinfachen und gleichzeitig eine zusätzliche visuelle Struktur hinzuzufügen. Und während der Zuweisung ("LVALUE-Produktion") nicht immer möglich ist, gibt es noch einige interessante Tricks mit einfacher Wertproduktion: mit REF ("Dies ist eine Zeichenfolge" ) als t: drucken talternativwhodieren yadda.yadda.yadda referenzierung ist alles zu häufig, man kann eine proximere variablere Aufgabe erleben: WSgi = app.config.server.wsgi wsgi .logger = Some_logger wsgi.debug_level = 4 wsgi.port = 8080 Dies fehlt der eingerückte Struktur des Withref-Ansatzes, ist aber immer noch viel bevorzugt, was Sie oft auf dem Feld finden (Multi-Line-Lambdas, neue Schleifenstrukturen usw.) - erfordert aber auch das BYTEPLAY-Modul, das sich aktiv introspencektiert und Munges Python Bytecode ("GEFAHR, Will Robinson! Gefahr!") und wurde nicht aktualisiert, um über Python 2.6 zu arbeiten .Possible zukünftige Extensionas "mitHacks" zeigt mit Intros BEWERTUNG Wir könnten den LVALUE des anrufenden Objekts auch im Randgehäuse ermitteln, in dem es sich um einen Blattknoten seiner umschließenden Struktur handelt. Dies würde keine Bytecode-Änderungen erfordern, und sollte mit modernen Versionen von Python (z. B. 2.7.x und 3.x) kompatibel sein. Wemin, dass dieser Trick einfach, transportvoll, rock-fest zuverlässig und transparent genug erfolgen kann, um diejenigen zu befriedigen, die diejenigen Codieren Sie die Module, die zum größten Teil dieser Art von Dereferenzierungs-Vereinfachung erforderlich sind - dh Komplexe Module, die häufig in den Produktionseinstellungen verwendet werden, in die sie verständlicherweise verabscheuen, um mögliche Fehlerquellen oder einer Leistungsimpedanz einzuführen - dh die wichtigste Frage.Installation PIP installieren Sie mitRef, um den Test- und Demonstrationscode wie hier gezeigt zu verwenden :: PIP Install EasyDict easyDict (Möglicherweise müssen Sie diese mit "Sudo" präfixieren, um die Installation zu autorisieren.) Die Homepage des Produkts.)


mitref Zugehörige Software