1. ホーム
  2. python

[解決済み] 1..__truediv__` とは何ですか?Pythonに.NETはありますか?("dot dot") 記法の構文がありますか?

2022-04-13 05:32:20

質問

最近、私が 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

しかし、私の疑問は

  • どうしてそんなことができるのですか?
  • 点が2つあるのは、実際にはどういう意味ですか?
  • 可能であれば)より複雑な文の中でどのように使うことができるのか?

これで今後、何行もコードを書く手間が省けそうです...:)

解決方法は?

あなたが持っているのは float リテラルから末尾の0を取り除いた後、このリテラルにアクセスすると __truediv__ というメソッドがあります。 それ自体は演算子ではありません。最初のドットはフロート値の一部で、2つ目のドットはオブジェクトのプロパティやメソッドにアクセスするためのドット演算子です。

次のようにしても、同じ点に到達できます。

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

もう一つの例

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

ここで、2.0に1.0を足すと、明らかに3.0になる。