在python3中,在NoneType
上使用>
或<
操作数将导致类型错误
例如,在比较两个日期时,我可以使用:
a = datetime(...)
b = datetime(...)
if a < b:
// do something
但是如果a = None
出于某种原因(例如,这是函数的结果),则会导致:
'<' not supported between instances of 'NoneType' and 'DateTime'
在python2中,这将计算为True
如果a
和b
是变量,可以是datetime
或None
,如果其中一个值是None
,我想跳过比较,解决这个问题最优雅的方法是什么
例如,以下方法可行,但感觉有更好的单线方法
if a and b:
if a < b:
// do something
您可以使用扩展的if语句,但我通常更喜欢使用
try
块。这最终是非常可读的,并且显式地处理TypeErrors
,同时还提供了一种相对方便的方法来处理可能出现的其他错误由于您在这里使用的是对象而不是数字,因此我将使用简短而明确的:
如果
a
或b
是None
,它将短路,并且永远不会执行比较您可以使用
or
运算符:输出:
int(a or 0)
返回0
如果a
是None
,否则,它将返回a
(如果a
是一个数字)更新:解决更新后的问题:
相关问题 更多 >
编程相关推荐