【发布时间】:2019-03-01 12:13:22
【问题描述】:
跟进my previous question我有以下一个。这些在 Python 中是一样的吗?
a += b[1] / 2
和
a += (b[1] / 2)
前提是:
-
a之前已经定义为 float -
b是一个元组列表 -
b[1]是具有单个元素的元组
同样,我也有兴趣了解以下行为:
-
a之前已经定义为 float -
b是浮点数列表
【问题讨论】:
-
类型与解析的优先级无关。
-
我认为您要问的是“由于
a += expr或多或少等同于a = a + expr,我是否需要担心加法的优先级与另一个的优先级相比表达式中的运算符?”我认为您上一个问题的现有答案涵盖了:添加和分配总是最后发生。 -
是的,它们还是一样的。不管你想出什么样的表达式变体,
+=扩展赋值仍然只是一个声明。 -
最好将
a += expr视为a = a + expr的暗示性;扩充赋值运算符的实际语义独立于相应的二元运算符。 (也就是说,a += b没有有 表示像a = a + b这样的任何东西,但它并不尽可能接近它,这将是非常令人惊讶的。) -
如果
b[1]真的是tuple,则表达式将引发异常,因为元组上没有除法运算。
标签: python tensorflow operator-precedence augmented-assignment