Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我是++++++++;我在python中是否有效?_Python - Fatal编程技术网

为什么我是++++++++;我在python中是否有效?

为什么我是++++++++;我在python中是否有效?,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=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 
值得注意的是,从中,您将看到一行:

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

这意味着表达式中的因子可以是前面有
+
-
~
的因子。也就是说,它是递归的,所以如果
5
是一个因子(这是因为因子->幂->数),那么
-5
是一个因子,
-5
-5

加号被认为是最右边的
I
变量的一元运算符,如+(-3)=-3或+(+++3))=3。仅最左边的符号(加号或减号)被解析为二进制,因此在您的示例中,i+++i=i++(+++i)),它转换为i+i=3+3=6

其他表达式遵循相同的原则。

应为

print i + (+ (+i) )
也就是说,第一个符号是加法运算符,其他符号是中缀符号

+i
和(不幸的是)


因此是有效的陈述。

我喜欢最后一个++我是有效的,它只是不做它在其他语言中所做的:)你遇到它了吗?在一场混乱的编码竞赛中?@S.Lott-我在这里要求任何解决方案吗?问为什么这是有效的是错误的吗?。顺便说一句,我只是不小心在pythonidle中输入了i++1。就在那时我试过这个。对于C++背景的人来说,这很奇怪。1,只是因为我不明白为什么会有人这样做——1。每个问题都必须直接从某个“实际”问题中剥离出来吗?@S.洛特:是的,除了这个“奇怪的假设”实际上提出了关于运算符优先级、固定性和组合性的好问题。我见过更糟糕的。@S.Lott祝贺你鼓励大家发帖提问。你是在竞选S.O.内容新西兰徽章吗?说真的,我已经知道这门语言十年了,这个问题连同例子和答案对我来说比其他一些评论更有趣,更有教益,我会毫不犹豫地给它们贴上标签。就我的2c。
++i