我有一个cython功能:
[ExitDate]
如果我用以下方式调用它:
=DateDiff("d", [EntryDate], Nz([ExitDate], Date()))
我得到了值def test(int a, int b):
return a+b
。
为什么没有输入错误?
答案 0 :(得分:1)
这是因为float
定义了特殊功能__int__
,在此过程中Cython调用了该特殊功能(或更精确的PyNumber_Long
,至少是我的猜测,因为它不是通过所有这些定义和ifdef很容易track the call。
这很重要:如果您的对象定义了__int__
,那么Cython可以将其用作整数。使用Cython进行隐式类型检查不是很可靠。
如果需要,您可以检查输入是否为int
对象,如以下示例所示(对于Python3,对于Python2,它有点复杂,因为存在不同的{{1} }类)
int