Check whether variable is int or long in Python 2.7 and 3.x
我想对在Python2.7及更高版本中工作的API函数进行输入类型检查。API的参数为epoch以来的时间戳(毫秒)。我需要确保输入是正数。
根据值的不同,python 2.7将时间戳表示为
1 | isinstance(timestamp, (int, long)) |
但是,对于python 3,
1 | isinstance(timestamp, int) |
号
为了与python 2.7兼容,我尝试将时间戳强制转换为int。但是,如果值不在
在这两个版本的python中,什么是使这一检查成为通用检查的最佳方法?
检查任何整数,使用
1 | isinstance(timestamp, numbers.Integral) |
或者遵循这个关于python 2-3兼容代码的练习表
只需安装
1 2 3 4 5 6 7 | # Python2 >>> x = 9999999999999999999999L >>> isinstance(x, int) False >>> from builtins import int >>> isinstance(x, int) True |
。
借用
1 2 3 4 5 6 7 8 9 10 | import sys PY3 = sys.version_info[0] == 3 if PY3: integer_types = (int,) else: integer_types = (long, int) long_type = integer_types[0] |
然后你可以查一下
1 | if isinstance(value, integer_types): |
。
和铸造
1 | value = long_type(value) |
如果要检查变量类型是否完全等于Intgiven,只需使用
1 2 3 4 5 | import sys if sys.version_info >= (3,0): long = int type(v) in (int, long) |
号
1 2 3 4 5 6 7 | # This will works in both Python2, Python3 # Just check type of the variable and compare import time timestamp = time.time() type(timestamp) == int type(timestamp) == float |
。