为什么语句1 in (1, 2, 3) == True
在Python中返回False
?
Python中的运算符优先级是不明确的吗?
答案 0 :(得分:10)
因为,运算符优先级为the documentation:
请注意,比较,成员资格测试和身份测试都有 相同的优先级,并具有从左到右的链接功能 在Comparisons部分中描述。
“比较”部分显示了链接的示例:
比较可以任意链接,例如,
x < y <= z
是等效的 到x < y and y <= z
所以:
1 in (1, 2, 3) == True
被解释为:
(1 in (1, 2, 3)) and ((1, 2, 3) == True)
如果通过添加括号来覆盖此链接,则会得到预期的行为:
>>> (1 in (1, 2, 3)) == True
True
请注意,您应该只使用例如True
或False
,而不是将相同性的真实性与if thing:
或if not thing:
进行比较。 function InternalDecrypt(const S: AnsiString; Key: Word): AnsiString;
var
I: Word;
Seed: Word;
begin
Result := S;
Seed := Key;
for I := 1 to Length(Result) do
begin
Result[I] := Char(Byte(Result[I]) xor (Seed shr 8)); //Error is here
Seed := (Byte(S[I]) + Seed) * Word(C1) + Word(C2)
end
end;
和{{1}}。