用Pythonic方法进行xor测试
pythonic编写条件的方法是什么,该条件检查两个变量都不能为none,并且两个变量也不能为none。比如说用Pythonic方法进行xor测试,python,Python,pythonic编写条件的方法是什么,该条件检查两个变量都不能为none,并且两个变量也不能为none。比如说 if a is None and b is None: raise SystemExit(1) if a is not None and b is not None: raise SystemExit(1) # rest of the code 如果all((a,b不是None)),您可以尝试:pass In [31]: a = 1 In [32]: b = 1 In [33]:
if a is None and b is None: raise SystemExit(1)
if a is not None and b is not None: raise SystemExit(1)
# rest of the code
如果all((a,b不是None)),您可以尝试:pass
In [31]: a = 1
In [32]: b = 1
In [33]: all((a,b is not None))
Out[33]: True
In [34]: b = None
In [35]: all((a,b is not None))
Out[35]: False
注意:
将a
或b
的值设置为0
将产生True
肾盂?
In [36]: len('if a is not None and b is not None')
Out[36]: 34
In [37]: len('all((a,b is not None))')
Out[37]: 22
您在这里使用
pass
是因为您有else
语句吗?在这种情况下,为什么不使用如果a为None或b为None:
进行相反的测试?@yayu:那么你的测试是不正确的。如果a为无,b为无,则使用:引发异常
@yayu:然后将该部分作为问题的一部分。目前,它只是太模糊,无法以任何有意义的方式回答,并且有可能被关闭为“不清楚”、“过于宽泛”或“主要基于意见”;您可以使用bool(a为无)!=bool(b是None)
或bool(a是None)^bool(b是None)
。OP的可能副本需要进行异或测试,例如,其中一个必须是None
,另一个必须不是None
@MartijnPieters:你很好地理解了这个问题吗?OP说,检查两个变量不能都是无的,两个变量也不能都不是无的
。现在的问题比开始时清楚多了,但请阅读帖子上的评论。OP要求进行异或运算,我想他编辑了这个问题。这不是他最初问的问题。您只测试两个变量是否都是None
,而不是相反。
if (a is None) != (b is None):
raise SystemExit("kkthxbye")
# remainder of code