奇怪的Cython语法

时间:2017-06-21 16:07:22

标签: python cython

我正在查看快速分数库,我发现了以前从未见过的这种cython语法:

  an, ad = (<Fraction>a)._numerator, (<Fraction>a)._denominator

(<Fractions>a)代表什么?这似乎是某种内存分配。但是,我不确定。

2 个答案:

答案 0 :(得分:5)

It's a type cast.

它向Cython保证该对象确实是REG ADD HKLM\SYSTEM\CurrentControlSet\services\MSSQL$EXPRESS2012 /v Start /t REG_DWORD /d 2 /f REG ADD HKLM\SYSTEM\CurrentControlSet\services\MSSQL$EXPRESS2012 /v DelayedAutostart /t REG_DWORD /d 1 /f ,以便它可以访问Fraction类型的_numerator_denominator属性。如果没有强制转换,它只能使用通用的Python查找机制来查找不允许您访问cdef类型的任何非public属性的属性。

它没有做任何检查,它实际上是正确的类型,所以如果你不是100%确定对象实际上是一个分数,那么你应该做cdef而不是检查。

答案 1 :(得分:4)

这只是Cython syntax for type casting。在这种情况下,expr正在转换为a类型。必须使用额外的括号来表示您要转换Fraction并获取转换值的a属性,而不是转换_numerator