python - 什么是 `1..__truediv__` ? Python 是否有 .. ("dot dot") 表示法语法?

标签 python python-3.x syntax operators python-2.x

我最近遇到了一种我在学习 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

但我的问题是:

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

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

最佳答案

你所拥有的是一个没有尾随零的 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。

关于python - 什么是 `1..__truediv__` ? Python 是否有 .. ("dot dot") 表示法语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487811/

相关文章:

python - 获取 numpy.poly1d 曲线的最小点

python - 在没有 django.contrib.admin 的情况下运行 django 应用程序

python - QWidget::setLayout:尝试在 ProgramWindow ""上设置 QLayout "",该窗口已经有布局

ruby - Haml 语法错误 > 非法元素类和 ID 必须有值

Python:二进制掩码中从索引到1的距离

python - 警告 : IPython History requires SQLite, 您的历史将不会被保存

python-3.x - SyntaxError : invalid syntax : except urllib2. HTTPError,e:

python - 在 webhook 的头像上上传本地镜像时出现错误 '_io.BufferedReader' 对象没有属性 'startswith'

python - 为什么当我正确缩进打印行时终端中出现语法错误消息,但当我缩进它时程序运行并打印输出 33 次?

c++ - 前向声明改变功能行为?