Was ist `1..__truediv__` ? Funktioniert die Python haben einen .. ("dot dot") - notation-syntax?

Kurzem stieß ich auf eine syntax, die ich nie zuvor gesehen, als ich erfuhr, python noch in den meisten tutorials, die .. notation, es sieht wie folgt aus:

f = 1..__truediv__ # or 1..__div__ for python 2

print(f(8)) # prints 0.125 

Dachte ich, es war genau das gleiche wie (außer es ist länger, natürlich):

f = lambda x: (1).__truediv__(x)
print(f(8)) # prints 0.125 or 1//8

Aber meine Fragen sind:

  • Wie kann Sie das tun?
  • Was bedeutet es eigentlich, mit den zwei Punkten?
  • Wie können Sie es in eine komplexere Erklärung (wenn möglich)?

Dieser wird mir wohl sparen viele Zeilen code in der Zukunft...:)

  • Hinweis: (1).__truediv__ ist nicht wirklich das gleiche wie 1..__truediv__, wie der ehemalige Anrufe int.__truediv__ während die letztere hat float.__truediv__. Alternativ können Sie auch 1 .__truediv__ (mit Leerzeichen)`
  • Beachten Sie, dass 1//8 ist 0, nicht 0.125, in einer der beiden Versionen von Python.
  • erinnert mich an if (x <- 3) {...}
  • Hier ist ein Beispiel dafür.
  • Wenn du gehst, schreiben einen lambda-Ausdruck, schreiben lambda x: 1/x, das ist ein Zeichen kürzer (die gleiche Länge, wenn Sie brauchen 1./x) Irgendetwas, das explizit aufrufen einer __method__ (außerhalb einer abgeleiteten Klasse, die das überschreiben dieser Methode) wahrscheinlich fällt in die Kategorie "dumm python tricks" - Spaß auf die Vernunft, über die aber fast sicher nicht, gehören in die Produktion von code.
  • Kannst du bitte eine Erklärung geben mit Ihrem Kommentar, so werden die Gründe, warum dies nicht getan werden, verständlich sind?
  • Die hohe Qualität der Antworten und Kommentare, zeigen Sie den Beispielcode braucht Einsicht zu verstehen, ist erstaunlich, zu viele, hat alternativen, die sind übersichtlicher, mehr allgemein, und mindestens genauso effizient. Mein main gripe ist, dass die Lesbarkeit zählt. Speichern Klugheit, wo es am meisten gebraucht wird - die Kommunikation mit den Menschen.

InformationsquelleAutor abccd | 2017-04-19
Schreibe einen Kommentar