栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

扩展赋值的Python运算符优先级

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

扩展赋值的Python运算符优先级

是的,这些都是一样的。Python的增强分配 不是表达式
,它是语句,并且不在表达式优先级规则中发挥作用。

+=
不是运算符,而是扩展的赋值语句语法的一部分。

因此 _,右侧的

+=
_所有内容都是表达式,但
+=
本身不是,因此赋值将始终在最后处理。

而且,由于(增强的)赋值不是表达式,因此它也不能产生用于周围表达式的值。没有

(a += b) / 2
,这是语法错误,当然也没有
if (a += b /2):
或其他类似的恶作剧。

请参阅有关
扩充赋值语句

的参考文档,该文档指出语法为:

augmented_assignment_stmt ::=  augtarget augop (expression_list |

yield_expression)
augtarget ::= identifier | attributeref | subscription
| slicing
augop ::= “+=” | “-=” | “=” | “@=” | “/=” | “//=”
| “%=” | “
*=”
| “>>=” | “<<=” | “&=” | “^=” | “|=”

因此,这

augop
是语句语法的一部分,只有后面的部分是表达式(具体来说是a
expression_list
yield_expression
语法规则)。

此外,说明显示:

扩充赋值评估目标(与普通赋值语句不同,不能解包)和表达式列表,对两个操作数执行特定于赋值类型的二进制运算,并将结果赋值给原始目标。该目标仅评估一次。

因此,

augtarget
首先处理零件,然后处理表达式列表(或yield表达式),然后扩展的分配应用运算符并分配回结果。

此外,表达式参考文档的确包含一个优先级表,但是该表不包含赋值(增强的或其他形式的赋值),只是因为赋值不是表达式而是语句。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号