Bef*_*ght 3 python types cython
对于int
对象,可以这样使用cpython的cimported函数:
%%cython
from decimal import Decimal
from cpython cimport PyLong_Check
val_decimal = Decimal(1)
print(PyLong_Check(val_decimal))
Run Code Online (Sandbox Code Playgroud)
False
Run Code Online (Sandbox Code Playgroud)
但似乎没有对应的功能decimal
。
另一种方法是这样使用try-except
:
%%cython
from decimal import Decimal
from cpython cimport PyFloat_Check
cdef bint check(object val):
if PyFloat_Check(val):
return False
try:
float(val)
return True
except:
return False
val_decimal = Decimal(1.1)
val_float = 1.1
print (check(val_decimal))
print (check(val_float))
Run Code Online (Sandbox Code Playgroud)
True
False
Run Code Online (Sandbox Code Playgroud)
但这不仅会捕获decimal
所有可能转换为的内容float
。例如,也check("1.1")
返回True
(可能也排除了'str',check()
但这看起来仅是'替代方法'-无法保证check()
现在仅在上触发decimal
)。
那么检查decimal
cython 的正确方法是什么?
归档时间: |
|
查看次数: |
80 次 |
最近记录: |