该文档整理了 Phpy 扩展中 PHP 运算符与 Python 运算符及 Python 特殊方法之间的映射关系。
| PHP 运算符 |
Python 运算符 |
Python 特殊方法 |
说明 |
+ |
加法 |
__add__ |
两个 Python 对象相加 |
- |
减法 |
__sub__ |
Python 对象相减 |
* |
乘法 |
__mul__ |
Python 对象相乘 |
/ |
除法 |
__floordiv__ |
Python 对象地板除 |
% |
取模 |
__mod__ |
Python 对象取余 |
** |
幂运算 |
__pow__ |
Python 对象幂运算 |
| PHP 运算符 |
Python 运算符 |
Python 特殊方法 |
说明 |
<< |
左移 |
__lshift__ |
Python 对象左移 |
>> |
右移 |
__rshift__ |
Python 对象右移 |
& |
按位与 |
__and__ |
Python 对象按位与 |
| |
按位或 |
__or__ |
Python 对象按位或 |
^ |
按位异或 |
__xor__ |
Python 对象按位异或 |
~ |
按位取反 |
__invert__ |
Python 对象按位取反 |
| PHP 运算符 |
Python 运算符 |
Python 特殊方法 |
说明 |
== |
等于 |
__eq__ |
Python 对象相等比较 |
!= |
不等于 |
__ne__ |
Python 对象不等比较 |
< |
小于 |
__lt__ |
Python 对象小于比较 |
<= |
小于等于 |
__le__ |
Python 对象小于等于比较 |
| PHP 运算符 |
Python 运算符 |
Python 特殊方法 |
说明 |
+= |
原地加法 |
__iadd__ |
Python 对象原地加法 |
-= |
原地减法 |
__isub__ |
Python 对象原地减法 |
*= |
原地乘法 |
__imul__ |
Python 对象原地乘法 |
/= |
原地除法 |
__ifloordiv__ |
Python 对象原地地板除 |
%= |
原地取模 |
__imod__ |
Python 对象原地取余 |
**= |
原地幂运算 |
__ipow__ |
Python 对象原地幂运算 |
<<= |
原地左移 |
__ilshift__ |
Python 对象原地左移 |
>>= |
原地右移 |
__irshift__ |
Python 对象原地右移 |
&= |
原地按位与 |
__iand__ |
Python 对象原地按位与 |
|= |
原地按位或 |
__ior__ |
Python 对象原地按位或 |
^= |
原地按位异或 |
__ixor__ |
Python 对象原地按位异或 |
- 原地操作: 赋值运算符(如
+=, -=, *=, 等)对应 Python 的原地修改方法(__iadd__, __isub__, __imul__, 等)
- 字符串连接: 当遇到字符串连接操作时会输出警告信息,因为 Python 对象不支持字符串连接操作
- 类型检查: 只有当操作数是 Python 对象时才会使用这些特殊方法,否则使用 PHP 的默认处理方式