python 不是带括号的运算符

python not operator with parenthesis

我有一个简单的逻辑 if 语句返回无效的语法错误。语句为:

if (a[1] != None and a[2] != None and !(a[3] == None and a[4] == None)):

第三个语法无效!操作员。为什么这不起作用?在这种情况下我应该使用另一个运算符吗?

所以逻辑本质上是:a[1] ^ a[2] ^ (a[3] v a[4])(其中这些表示具有值)。因此,没有 None 值的反向逻辑是:

!a[1] ^ !a[2] ^ !(a[3] ^ a[4])

我很确定我的逻辑数学是正确的,那么如何获得我需要的结果呢?

*背景信息:Python 2.7.10,整体代码从 SQL Server 2008 table 中提取数据,对其进行操作,然后将其插入到不同的 table 不允许 NULL 值,原始 table 散落着 NULL

感谢您的帮助!

python 中的逻辑非运算符不是 !,而是 not

你想要:

if (a[1] != None and a[2] != None and not (a[3] == None and a[4] == None)):

嗯,从文体上来说,当使用 None 时,最好使用 isis not 而不是 ==!=,所以

if (a[1] is not None and a[2] is not None) and not (a[3] is None and a[4] is None):