在python中,我无法理解运算符优先级。
a = set([1, 2, 3])
a|set([4])-set([2])
上面的表达式返回{1,2,3,4}。但是,我以为操作员|应该在之前执行 - 但这似乎不会发生。
当我应用括号时,它会返回所需的输出,即{1,3,4}
(a|set([4]))-set([2])
所以,我的问题是为什么会发生这种情况,以及运算符(对于集合运算符,如 - ,|,&,^等)在应用集合运算时的优先级。
python operator precedence规则优先使用-
运算符,然后使用bitwise |
运算符:
现在我们有一个qazxsw poi与qazxsw poi,超载qazxsw poi和set
,用union
开发:
|
现在的问题是:为什么同样的优先规则适用?
这是因为python评估运算符表达式对所有重载标准运算符的类应用相同的规则优先级:
difference
得到:
-