python - 为什么 i++++++++i 在 python 中有效?

标签 python

我“偶然”遇到了这种奇怪但有效的语法

i=3
print i+++i #outputs 6
print i+++++i #outputs 6
print i+-+i #outputs 0
print i+--+i #outputs 6 

(对于每个负号的偶数:输出6,否则输出0,为什么?)

这有什么用吗?

更新(不要误会……我爱 python): Python的原则之一说 应该有一种——最好只有一种——明显的方法来做到这一点。似乎有无数种方法可以做 i+1

最佳答案

由于 Python 没有 C 风格的++ 或 -- 运算符,因此可以假设您正在否定或肯定(?)左边的值。

例如你希望 i++5 是什么?

i=3
print i + +(+i) #outputs 6
print i + +(+(+(+i))) #outputs 6
print i + -(+i) #outputs 0
print i + -(-(+i)) #outputs 6 

值得注意的是,来自 Python Grammar Specification ,你会看到这条线:

factor: ('+'|'-'|'~') factor | power

这意味着表达式中的一个因子可以是一个以 +-~ 开头的因子。 IE。它是递归的,所以如果 5 是一个因子(这是因为 factor->power->NUMBER),那么 -5 是一个因子,- 也是一个因子-5--------5.

关于python - 为什么 i++++++++i 在 python 中有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883920/

相关文章:

python - 迭代行 if 语句并添加到新列 [Pandas/Python]

python - 如何在 Keras 中实现高斯模糊层?

python - `Ctrl` + `Alt` + `L` 不修复警告 PEP 8 : E122 continuation line missing indentation or outdented

python - 使用极坐标法追踪相位、轴和地球方向的椭圆轨道

python - 在 Python 的 Lambda 函数中使用(截至目前)未定义的函数

python - 来自 python 元组列表的 dask 数据框

python - `emoji` 和 `django-emoji` 包名冲突

python - 使用python BeautifulSoup,如何找到所有带有NOT类的 'a'标签

python - tensorflow.python.framework.errors_impl.InvalidArgumentError

python - 如何使用 Python 右对齐 shell 中的段落?