后缀j的后缀如何工作?我可以自己做后缀吗?

时间:2018-07-07 17:16:35

标签: python python-3.x complex-numbers

我知道复数是什么以及它们在数学上是如何工作的,但是仅通过在数字后加上j来使python 知道是复杂的吗? / strong>

>>> j
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'j' is not defined
>>> 1*j
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'j' is not defined
>>> 1j
1j
>>> 1j**2
(-1+0j)

我可以自己做一个后缀,例如p(严格意义上肯定)吗?

我可以做这样的事情吗?

>>> ... some weird stuff here ...
>>> p
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'p' is not defined
>>> 1*p
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'p' is not defined
>>> -1p
1p
>>> 0p
1p
>>> 

1 个答案:

答案 0 :(得分:2)

这是内置于Python语法中的,就像小数点是一样,还是科学表示法中的e1e10等)。 j使数字文字虚构。

Python不允许您更改此设置。这并不意味着您不能-您可以修改语法-但随后该语言不再是Python。

Python中允许的最接近的近似值是通过实现一个运算符。

>>> class StrictlyPositive:
    def __rmatmul__(self, number):
        return abs(number)


>>> p = StrictlyPositive()
>>> -1@p
1

但是在进行此类操作时,必须注意操作符的优先级。为什么不直接使用内置的abs