首页 > 解决方案 > if-else 优化:对多类型对象的完整性检查

问题描述

我有一个对象 X 可能是数据框或无

我想检查 X 是空的还是无。

if x:
 # do something

不起作用。

我有这个:

if isinstance(x, pd.DataFrame):
    if x.empty:
        status = False
    else:
        status = True
elif x is None:
    status = False
else:
    status = True

但它似乎可以优化。你有什么建议吗?

标签: python

解决方案


我们经常做的是从基本情况开始,只有在满足某些条件时才重新分配值。这避免了额外的(并且经常重复的)else 子句。在你的情况下,你可以写:

status = True

if x is None or isinstance(x, pd.DataFrame) and x.empty:
    status = False

请注意,效率方面的差异是最小的/不存在的(我们仍然检查 x 是否为 None 并且(如果不是)它是否是 DataFrame 以及它是否为空),但它更简洁,并且可以说,更具可读性。


推荐阅读