我"意外地"遇到了这种奇怪但有效的语法
i=3
print i+++i #outputs 6
print i+++++i #outputs 6
print i+-+i #outputs 0
print i+--+i #outputs 6
Run Code Online (Sandbox Code Playgroud)
(对于每一个甚至没有:减号,它输出6其他0,为什么?)
这有用吗?
更新(不要采取错误的方式..我喜欢python):Python的一个原则说应该有一个 - 最好只有一个 - 明显的方法来做到这一点.似乎有无限的方法来做i + 1
das*_*ang 28
由于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
Run Code Online (Sandbox Code Playgroud)
值得注意的是,从Python语法规范中,您将看到以下行:
factor: ('+'|'-'|'~') factor | power
Run Code Online (Sandbox Code Playgroud)
这意味着,在表达式中的一个因素可以是由前面的因子+,-或~.即它是递归的,所以如果5是一个因素(因为因子 - >幂 - > NUMBER),那么-5是一个因素,所以是--5和--------5.
加号被认为是最右边i变量的一元运算符,如+( - 3)= -3或+(+(+ 3)))= 3.只是最左边的符号(加号或减号)被解析为二进制,所以i +++ i = i +(+(+ i)),在你的例子中,它转换为i + i = 3 + 3 = 6.
其他表达式遵循相同的原则.
那应该读
print i + (+ (+i) )
Run Code Online (Sandbox Code Playgroud)
也就是说,第一个符号是加法运算符,其他符号是中缀符号
+i
Run Code Online (Sandbox Code Playgroud)
和(不幸的)
++i
Run Code Online (Sandbox Code Playgroud)
因此是有效的陈述.
| 归档时间: |
|
| 查看次数: |
699 次 |
| 最近记录: |