如何检查变量是否为整数?
当前回答
下面是这里提到的不同方法的总结:
Int (x) == x 尝试x = operator.index(x) isinstance (x, int) isinstance (x, numbers.Integral)
下面是它们如何应用于各种具有整数值的数值类型:
你可以看到它们不是100%一致的。Fraction和Rational在概念上是相同的,但是一个提供了.index()方法,而另一个没有。复杂类型不喜欢转换为int,即使实部是整数,虚部是0。
(np.int8|16|32|64(5)表示np.int8(5), np.int32(5)等行为相同)
其他回答
你可以这样做:
name = 'Bob'
if type(name) == str:
print 'this works'
else:
print 'this does not work'
它会返回'this works'…但是如果你将name改为int(1),那么它将返回'this does not work',因为它现在是一个字符串… 你也可以试试:
name = int(5)
if type(name) == int:
print 'this works'
else:
print 'this does not work'
同样的事情会发生
如果你真的需要检查,那么最好使用抽象基类而不是具体类。对于一个整数,这意味着:
>>> import numbers
>>> isinstance(3, numbers.Integral)
True
这并没有将检查限制为仅int或仅int和long,而是还允许其他用户定义的行为为整数的类型工作。
为什么不试试这样的方法呢:
if x%1 == 0:
测试,如果object是一个字符串(适用于Python 2。*和Python 3。*)
text = get_text()
try:
text = text+""
except:
return "Not a string"
do_something(text)
如果你想检查不考虑Python版本(2。x vs . 3.x),使用六(PyPI)和它的integer_types属性:
import six
if isinstance(obj, six.integer_types):
print('obj is an integer!')
在六个(一个非常轻量级的单文件模块)中,它只是这样做的:
import sys
PY3 = sys.version_info[0] == 3
if PY3:
integer_types = int,
else:
integer_types = (int, long)
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录