在带有多个布尔运算符的if语句中抛出的SyntaxError

dop*_*man 1 python if-statement python-2.7

这是我的代码:

if mode not "w" or mode not "r+":
    # do stuff
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

SyntaxError: invalid syntax

有谁知道我做错了什么?

Mar*_*ers 5

not不是比较运算符; 它是一个一元布尔运算符,这意味着它只需要一个参数.

也许你想要!=,而不是平等?

if mode != "w" and mode != "r+":
Run Code Online (Sandbox Code Playgroud)

我也替换orand,因为如果模式等于'w'不会等于'r+'.所有这些负面因素都让你很难理解,你可以使用:

if not (mode == 'w' or mode == 'r+'):
Run Code Online (Sandbox Code Playgroud)

从逻辑上讲,如果这更容易理解.

您还可以使用元组和负成员资格测试将测试合并为一个not in:

if mode not in ('w', 'r+'):
Run Code Online (Sandbox Code Playgroud)

这更容易阅读和理解.