python string-format aufrufen einer Funktion
Gibt es eine Möglichkeit, zu formatieren, mit dem neuen format die syntax einer Zeichenkette aus einer Funktion aufrufen? zum Beispiel:
"my request url was {0.get_full_path()}".format(request)
so ruft es die Funktion get_full_path
Funktion innen die Zeichenfolge und nicht als parameter in der Funktion format.
BEARBEITEN:
Hier ist ein weiteres Beispiel, das zeigt wahrscheinlich meinen Frust besser, das ist, was ich möchte:
"{0.full_name()} {0.full_last_name()} and my nick name is {0.full_nick_name()}".format(user)
dies ist, was ich vermeiden will:
"{0} and {1} and my nick name is {2}".format(user.full_name(), user.full_last_name(), user.full_nick_name())
Nein, das können Sie nicht. Welchen Unterschied wird es machen, aber tun
was ich vermeiden möchte ist so etwas wie dieses:
Was ist schlecht daran, mit dem gleichen Objekt zweimal?
In der Tat, indem Sie es tun, wie Sie wollen, Sie sind immer noch mit der gleichen Objekt zweimal.
vielen Dank für das kommentieren, was ich suchte, bekam in python implementiert 3.6 die sehr spannend ist.
"my request url was {0}".format(request.get_full_path())
?was ich vermeiden möchte ist so etwas wie dieses:
"my request url was {0} and my post was {1}".format(request.get_full_path(), request.POST)
. Ich will das gleiche Objekt nur einmalWas ist schlecht daran, mit dem gleichen Objekt zweimal?
In der Tat, indem Sie es tun, wie Sie wollen, Sie sind immer noch mit der gleichen Objekt zweimal.
vielen Dank für das kommentieren, was ich suchte, bekam in python implementiert 3.6 die sehr spannend ist.
InformationsquelleAutor Hassek | 2013-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python 3.6 fügt Literale string-interpolation, die geschrieben mit einem
f
Präfix. Sehen PEP 0498 -- Literale String-Interpolation.Dieser erlaubt zu schreiben
Es sollte angemerkt werden, dass diese nicht die tatsächlichen Zeichenfolgen, sondern stellen-code zur Auswertung zu einem string jedes mal. Im obigen Beispiel
s
Typstr
mit Wert'hello'
. Sie können nicht passieren Sie einef
-string um, da wird es ausgewertet werden, um das Ergebnisstr
bevor Sie verwendet werden (im Gegensatz zustr.format
, aber wie jeder andere string-literal-Modifizierer wier'hello'
,b'hello'
,'''hello'''
). (PEP 501 -- Allgemeine Zwecke, string interpolation (derzeit aufgeschobenen) legt ein string-literal ist, wird die Bewertung zu einem Objekt, die Substitutionen später.)InformationsquelleAutor leewz
Nicht sicher, ob Sie das Objekt ändern kann, aber das könnte man ändern, oder wickeln Sie das Objekt, um die Funktionen Eigenschaften. Dann würden Sie Aussehen wie Attribute, und Sie könnten es tun, wie
die legal IST.
'{0[hello]}'.format({'hello':'world'})
Ergebnisse in'world'
.Ja, das dict-Abruf funktioniert out-of-the-box, ohne dass diese WrapperClass, FYI
gut zu wissen (ich dachte, dass kam erst später hinzu), aber die Frage war über den Aufruf von Funktionen, die nicht wirklich auf der Suche bis die Wörterbuch-Artikel. Literale string-interpolation kann es aber tun..
InformationsquelleAutor Corley Brigman
Python bietet keine direkte Unterstützung für variable interpolation. Dies bedeutet, dass es keine bestimmte Funktionalität (nämlich aufrufenden Funktion in strings), die anderen Sprachen unterstützen.
So, es gibt nicht wirklich etwas zu sagen als Nein, können Sie nicht tun. Das ist nicht nur, wie Python ' s Formatierung syntax funktioniert.
Die besten, die Sie haben, ist dies:
InformationsquelleAutor iCodez
Was über diese sehr seltsame Sache?
Erklärung:
Ich immer noch lieber die Art und Weise Sie es tun.
Wenn Sie möchten, Lesbarkeit, können Sie dies tun:
{:%Y}
und es funktioniert.Tut mir Leid, dass ist alles, was ich habe 🙂 ich glaube nicht, dass Python so weit geht. Vor allem, es ist nicht berühmt für seine string-interpolation/Formatierung sowieso :/
Ich lass die Frage offen, für eine Weile, aber meine Hoffnungen sind gering, auf dieser ein 🙁
InformationsquelleAutor Paulo Bu
Also Zusammenfassung der Methoden wäre
InformationsquelleAutor Red Pill