float.__pos__ 是什么意思?

tcp*_*per 1 python

我正在写一个类似的函数计算eval。回想起来float.__pos__,我真的不知道为什么会有这么一个无用的功能。因为:

>>> float.__pos__(-1.0)
-1.0
>>> float.__pos__(1.0)
1.0
Run Code Online (Sandbox Code Playgroud)

whilefloat.__neg__完全不同:

>>> float.__neg__(1.0)
-1.0
Run Code Online (Sandbox Code Playgroud)

那么 的意义是什么float.__pos__

Tim*_*ers 5

>>> help(float.__pos__)
Help on wrapper_descriptor:

__pos__(...)
    x.__pos__() <==> +x
Run Code Online (Sandbox Code Playgroud)

它是“一元加”运算符,在处理浮点数时+x调用x。正如您所发现的,它基本上对浮点数没有任何作用;-)但是,您可以定义一个子类来用它做一些不平凡的事情。这就是它存在的原因。