我用Python写了这个函数:
def is_number_like(x):
try:
int(x) + 1
except:
return False
return True
如果我写float(x)
或者int(x)
是否有区别?在某些情况下,+1
部分可能有用吗?
编辑:is_number_like
会在传递字符串时返回True
- 这不是我想要的。我想要一个函数,在任何时候都会返回False
,当文本值作为参数传递时。有这样的方法吗?
也许:
def is_number_like(x):
try:
x + 1
except:
return False
return True
会更好吗?
或者可能是:
def is_number_like(x):
try:
float(x + 1) == float(x) + 1
except:
return False
return True
我希望编写一个模块,可以接受任何代表一维实数的良好数字类型(例如SimpleITK.sitkUInt8
数字类型或numpy.int32
等)。
我担心可能会有一些库,在转换为整数或浮点数时不会抛出错误。例如,我可以想象以下情况:
>>> z = SomeComplexType(1. + 2.j)
>>> z
(1+2j)
>>> z -= 2.j
>>> z
(1+0j)
>>> float(z) # does not raise an error
1.
这种情况可能会发生吗?我需要担心吗?
而且,所有设计良好的实数类型都可以无误地转换为float
吗?
PS. 我已经阅读了这篇文章:如何检查字符串是否为数字(浮点数)?
int("1.23")
吗?而且x
到底应该是什么?一个字符串,还是其他类似数字的对象? - tobias_kfloat((1+0j))
时出现错误(“TypeError: can't convert complex to float”)。 - Scott Hunter