我在玩cython教程(http://docs.cython.org/en/latest/src/tutorial/cython_tutorial.html)
我有这样一个目录:
somedir/ExampleCython.py
somedir/fib.pyx
somedir/fib.so
somedir/function_file.py
somedir/setup.py
在哪里光纤pyx从上面链接的cython教程中定义函数fib,function_文件.py包含以下定义:
^{pr2}$以及示例thon.py包含以下内容:
import fib as moo
print moo.fib
from function_file import moopy
print moopy
我建造了小谎使用python设置.py构建扩展——就地,然后运行python示例thon.py我得到以下输出:
<built-in function fib>
<function moopy at 0x1002b4398>
现在,我知道python没有内置的fib,为了测试,我试着把fib这个名字改成像poopypants这样愚蠢的名字,但它还是说它是内置的。fib函数的名称空间发生了什么?我认为在这个模块中,我不能在其他地方找到一个更大的问题来简化它。在
供参考-OSX 10.12.6上的python 2.7.11/cython 0.26
这在一篇评论中得到了解决,但作为完整性的答案:
Python将函数描述为“内置函数”,纯粹是为了表示它是用C编译的,而不是说它是一个标准的库函数,因此出现了这样的问题:在正确的模块中找到了正确的函数。在
在我的电脑上,它显示为
<cyfunction module.function_name at 0xsome_address>
,这是一个更有帮助的消息。我认为这可能是Python3的改进(但我不能百分之百确定)。在相关问题 更多 >
编程相关推荐