在Python中区分bools和数字的最佳方法是什么?

Cha*_*ark 5 python

我有一个应用程序,我需要能够尽快区分数字和bool.除先跑之外有哪些替代方案isinstance(value, bool)

编辑:感谢您的建议.实际上,我想要做的就是检查数字,这样可以减少我的支票(数字更为普遍),并改善我的负面因素.isinstance()本身足够快.这x is True or x is False很有趣.

Bol*_*wyn 5

因此,Padraic Cunningham建议,以下可能会更快一些.我自己的快速实验 - cProfile没有显示出任何差异:

isbool = value is True or value is False
Run Code Online (Sandbox Code Playgroud)

我认为这是你能得到的最快速度:两种非类型强制比较.

编辑:我重播了@user 5061的计时测试并添加了我的声明.这是我的结果:

>>> import timeit
>>> stmt1 = "isinstance(123, bool)"
>>> stmt2 = "123 is True or 123 is False"
>>> t1 = timeit.timeit(stmt1)
>>> t2 = timeit.timeit(stmt2)
>>> print t1
0.172112941742
>>> print t2
0.0690350532532
Run Code Online (Sandbox Code Playgroud)

编辑2:注意,我在这里使用Python 2.7.@user 5061可能会使用Python 3(从print()函数中说明),因此在投入生产之前,对于YMMV,此处提供的任何解决方案都应由OP进行测试.