Frage

Warum (zB web2py) haben Sie Daten von einem Controller in einem Wörterbuch zurückzukehren anstelle von Variablen (siehe Rails)?

Zum Beispiel:

return dict(sape=4139, guido=4127, jack=4098)

statt (das ist die Art und Weise Rails tut es)

@var1 = "jello" 
@var2 = "hihi"

Gibt es einen Vorteil Wörterbücher über Normalgrößen (Geschwindigkeit her / code weise) mit?

Update: Die oben genannte Art und Weise ist eigentlich eine richtige Art und Weise ein Wörterbuch für die Erstellung von (zumindest in Python 2.6.1). Die andere Art und Weise (dass viele Leute sagen, es ist die richtige)

return {"var1": "jello", "var2": "hihi"} 

ist eine Menge von Python-Frameworks nicht verwendet.

Python Dokumentation : „Wenn die Tasten sind einfache Strings, ist es manchmal einfacher, Paare mit Keyword-Argumente angeben:“

dict(sape=4139, guido=4127, jack=4098)
War es hilfreich?

Lösung

Der Hauptvorteil besteht darin, dass dies der einzige Weg in Python ist eine Rückkehr) mehr als ein einziger Wert und b) gibt diesem Wert eines Namen. Andere Optionen wären eine Klasse (Zusatz) zu verwenden, ein Tupel zurückgeben (keine Namen, so dass Sie Indizes müßten verwenden, um die Werte zugreifen) oder erlauben nur einen einzigen Wert zurückgeben, die wahrscheinlich bedeuten würde, dass jeder einen zurückkehren Wörterbuch denn das ist die einfachste Lösung.

Es ermöglicht auch mehrere Methoden und kommen / fusionieren ihre Ergebnisse zu wickeln. Schließlich ermöglicht es leicht für jeden Anruf verschiedene Sätze von Wert / Namenspaaren zurück, beispielsweise optionale Werte weglassen oder zusätzliche Hinweise zurück.

Andere Tipps

Sie können lokale Variablen verwenden, wenn Sie möchten:

def hello():
    var1 = "whatever you like"
    var2 = "another value"
    return locals() # or vars()

hello.html:

<html><body>
 <p>var1 {{=var1}}</p>
 <p>var2 {{=var2}}</p>
</body></html>

von PHP web2py :

  

In web2py eine HTTP-Anforderung für   „/ App / C / F“ abgebildet wird, in einen Aufruf   die Funktion f () in der Datei (Controller)   c.py in der Anwendung "app". Das   Datei c.py ist in Python geschrieben. Das   Ausgang der Funktion f () kann eine sein,   string (in diesem Fall ist es zurückgegeben),   oder ein Satz von Variablen (implementiert als   ein Python-Wörterbuch). In Letzterem   Fall werden die Variablen gemacht in   HTML durch eine Datei c / f.html, eine so genannte   Ansicht.

Das Schöne daran ist, dass eine Template-Engine wie Jinja2 behandeln ein Objekt und ein dict ähnlich, also wenn:

d = {'color': 'red'}
o = Color(red)

diese dann alle Arbeiten in der Vorlage Syntax:

d.color d['color'] o.color o['color']
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top