Qu'est - `1..__truediv__` ? Python ont une .. (“dot dot”) de la notation de syntaxe?

Je suis récemment tombé sur une syntaxe je n'ai jamais vu avant, quand j'ai appris le python, ni dans la plupart des tutoriels, de la .. notation, il ressemble à quelque chose comme ceci:

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

print(f(8)) # prints 0.125 

J'ai pensé que c'était exactement la même chose que (sauf que c'est plus, bien sûr):

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

Mais mes questions sont:

  • Comment peut-il le faire?
  • Qu'est-ce que ça veux dire avec les deux points?
  • Comment pouvez-vous l'utiliser dans un environnement plus complexe déclaration (si possible)?

Cela va probablement me sauver de nombreuses lignes de code dans le futur...:)

  • Remarque: (1).__truediv__ n'est pas vraiment la même chose que 1..__truediv__, comme l'ancien appels int.__truediv__ tandis que les seconds ne float.__truediv__. Alternativement, vous pouvez également utiliser 1 .__truediv__ (avec un espace)`
  • Notez que 1//8 est 0, pas 0.125, dans les deux versions de Python.
  • me rappelle de if (x <- 3) {...}
  • Ici est un exemple de cette utilisation.
  • Si vous allez écrire un lambda, écrire lambda x: 1/x, qui est un caractère plus courte (de la même longueur si vous avez besoin d' 1./x) Tout ce qui implique d'appeler explicitement un __method__ (en dehors d'une classe dérivée première d'une telle méthode) probablement tombe dans la catégorie "stupide python astuces" - le plaisir de la raison, mais presque certainement n'a pas sa place dans le code de production.
  • S'il vous plaît pouvez-vous donner une explication avec votre commentaire, donc les raisons pour lesquelles ce ne devrait pas être fait compréhensibles?
  • La haute qualité des réponses et des commentaires montrent l'exemple de code des besoins de perspicacité pour comprendre, est surprenant pour beaucoup, a des alternatives qui sont plus clairs, plus générale, et au moins aussi efficace. Mon principal reproche est que la lisibilité compte. Enregistrer l'intelligence de l'endroit où il est le plus nécessaire - communiquer avec les humains.

InformationsquelleAutor abccd | 2017-04-19