Python 中检查变量是否是日期时间对象

使用 isinstance 内置函数检查变量是否是 Python 中的日期时间对象,例如 if isinstance(today, datetime):。 如果传入的对象是传入类的实例或子类,则 isinstance 函数返回 True。

from datetime import datetime

today = datetime.today()

print(today)

if isinstance(today, datetime):
    # ?️ this runs
    print('variable is datetime object')
else:
    print('variable is NOT datetime object')

如果传入的对象是传入类的实例或子类,则 isinstance 函数返回 True。

我们从 datetime 模块导入了 datetime 类。

如果我们创建一个日期对象并检查它是否是 datetime 的一个实例,将返回 False。

from datetime import datetime, date

d = date(2022, 9, 24)

if isinstance(d, datetime):
    print('variable is datetime object')
else:
    # ?️ this runs
    print('variable is NOT datetime object')

运行 else 块是因为日期对象不是日期时间的实例,它们是日期类的实例。

from datetime import  date

d = date(2022, 9, 24)

# ?️ pass date as second arg to isinstance
if isinstance(d, date):
    # ?️ this runs
    print('variable is datetime object')
else:
    print('variable is NOT datetime object')

我们还可以使用 is 运算符来检查对象是否为日期时间对象。

from datetime import datetime, date

d = date(2022, 9, 24)
print(type(d) is date)  # ?️ True

today = datetime.today()
print(type(today) is datetime)  # ?️ True

is 和 is not 运算符测试对象的身份:仅当 x 和 y 是同一对象时 x is y 才为真。

使用 id 函数确定对象的身份。

x is not y 返回逆真值。

type 函数返回对象的类型。

from datetime import datetime, date

d = date(2022, 9, 24)
print(type(d))  # ?️ <class 'datetime.date'>

today = datetime.today()
print(type(today))  # ?️ <class 'datetime.datetime'>

最常见的返回值与访问对象的 __class__ 属性相同。