我“偶然”遇到了这种奇怪但有效的语法
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/