[英]not able to understand behaviour of ** operator
我突然遇到了这个,我无法理解为什么会这样!
在python提示符下,在3以后使用**
运算符,如下所示给出错误的结果。 即
>>> 2**2**2
16
>>> 3**3**3
7625597484987L
>>> 4**4**4
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096L
然后我认为我必须使用括号,所以我使用它,它给出了正确的结果。
>>>(3**3)**3
19683
但是//
操作符正在支持并在这种操作中给出正确的结果,即
>>> 4//4//4
0
>>> 40//4//6
1
请帮我理解。
看起来**
运算符是右关联的,意味着3**3**3
评估为3**27
和4**4**4
为4**256
。
当你做4**4**4
类的东西时,你应该使用括号来明确你的意图。 正如@cHao指出的那样,解析器将解决模糊性,但它让其他人感到困惑。 你应该使用(4**4)**4
或4**(4**4)
。 这里明确的比隐含更好,因为获取权力并不是我们一直看到的工作日操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.