小编典典

什么是`1..__truediv__`?Python 是否有 .. ("dot dot") 符号语法?

all

我最近遇到了一种我在学习 python 时从未见过的语法,也没有在大多数教程中见过这种..表示法,它看起来像这样:

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

print(f(8)) # prints 0.125

我认为它与(当然,除了更长)完全相同:

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

但我的问题是:

  • 它怎么能做到这一点?
  • 这两个点实际上是什么意思?
  • 如何在更复杂的语句中使用它(如果可能)?

这可能会在将来为我节省许多代码行......:)


阅读 93

收藏
2022-07-18

共1个答案

小编典典

你所拥有的是一个float没有尾随零的文字,然后你可以访问它的__truediv__方法。它本身不是运算符;第一个点是浮点值的一部分,第二个是访问对象属性和方法的点运算符。

您可以通过执行以下操作达到相同的点。

>>> f = 1.
>>> f
1.0
>>> f.__floordiv__
<method-wrapper '__floordiv__' of float object at 0x7f9fb4dc1a20>

另一个例子

>>> 1..__add__(2.)
3.0

在这里,我们将 1.0 添加到 2.0,这显然会产生 3.0。

2022-07-18