【发布时间】:2019-01-24 08:41:24
【问题描述】:
我想对在 Python 2.7 及更高版本中工作的 API 函数进行输入类型检查。 API 采用自纪元以来以毫秒为单位的时间戳作为其参数。我需要确保输入是正数。
根据值,Python 2.7 将时间戳表示为integer 或long。所以类型检查看起来像这样:
isinstance(timestamp, (int, long))
但是,long 类型在 Python 3 中与 int 合并。实际上,long 类型不再存在。所以上面的行会导致异常。相反,检查将如下所示:
isinstance(timestamp, int)
为了与 Python 2.7 兼容,我尝试将时间戳转换为 int。但是,如果值超出 integer 范围,则转换操作仍会返回 long。这意味着对于Sun Jan 25 1970 20:31:23 之后的任何时间戳,检查都将失败。另请参阅this question 的答案。
要使它成为适用于两个 Python 版本的通用检查,最好的方法是什么?
【问题讨论】:
标签: python python-3.x python-2.7