python - 复数运算符优先级

标签 python cmath

这应该是不言自明的

>>> (1+2j).real  #Normal Usage
1.0
>>> (1+2j).imag  #Normal Usage
2.0
>>> 1+2j.real  #Normal Usage
1.0
>>> 1+2j.imag  #Flips Out
3.0
>>> 123+657j.real
123.0
>>> 123+657j.imag
780.0

z.imag 以某种方式将实部和虚部相加。
我发现这很有趣..这是一个错误还是一个有意的功能?

最佳答案

问题是 1+2j.imag 被解析为 1+(2j.imag)。显然 2j.imag2.0,所以 1+2j 返回 3.0。当您执行 1+2j.real 时,Python 会添加 12j.real2j.real0.0,因此您得到正确答案 1.0 作为返回。

如果像前两个示例一样将复数括起来,您将得到预期的结果。

关于python - 复数运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16102695/

相关文章:

python - 在 virtualenv 中使用 dev_appserver.py 时导入错误

visual-c++ - MSVC 上的 std::isfinite

c++ - 为什么我会从 cmath.h 中收到数百个语法错误?

python - 计算复数相位/参数的不同函数

python - 使用 python 日志记录内存使用统计

python - 简单的 python 列表与字典

python - 类似字典的对象,没有 __getitem__、__setitem__

android - 将 <cmath> 与 android ndk 结合使用时出现构建问题

c++ - 为什么我的非递归 sqrt 函数是递归的?

python - 基于列表填充数据框列